diff --git a/src/sbbs3/conobj.cpp b/src/sbbs3/conobj.cpp deleted file mode 100644 index e46628ac4dd671615c1ac68caf8e13cb3550f41f..0000000000000000000000000000000000000000 --- a/src/sbbs3/conobj.cpp +++ /dev/null @@ -1,905 +0,0 @@ -/* conobj.cpp */ - -/* Synchronet JavaScript "Console" Object */ - -/* $Id$ */ - -/**************************************************************************** - * @format.tab-size 4 (Plain Text/Source Code File Header) * - * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * - * * - * Copyright 2001 Rob Swindell - http://www.synchro.net/copyright.html * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License * - * as published by the Free Software Foundation; either version 2 * - * of the License, or (at your option) any later version. * - * See the GNU General Public License for more details: gpl.txt or * - * http://www.fsf.org/copyleft/gpl.html * - * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * - * For Synchronet coding style and modification guidelines, see * - * http://www.synchro.net/source.html * - * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * - * Note: If this box doesn't appear square, then you need to fix your tabs. * - ****************************************************************************/ - -#include "sbbs.h" - -#ifdef JAVASCRIPT - -/*****************************/ -/* Console Object Properites */ -/*****************************/ -enum { - CON_PROP_ONLINE - ,CON_PROP_STATUS - ,CON_PROP_LNCNTR - ,CON_PROP_TOS - ,CON_PROP_ROWS - ,CON_PROP_AUTOTERM - ,CON_PROP_TIMEOUT /* User inactivity timeout reference */ - ,CON_PROP_TIMELEFT_WARN /* low timeleft warning flag */ -}; - -static JSBool js_console_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - ulong val; - jsint tiny; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - tiny = JSVAL_TO_INT(id); - - switch(tiny) { - case CON_PROP_ONLINE: - val=sbbs->online; - break; - case CON_PROP_STATUS: - val=sbbs->console; - break; - case CON_PROP_LNCNTR: - val=sbbs->lncntr; - break; - case CON_PROP_TOS: - val=sbbs->tos; - break; - case CON_PROP_ROWS: - val=sbbs->rows; - break; - case CON_PROP_AUTOTERM: - val=sbbs->autoterm; - break; - case CON_PROP_TIMEOUT: - val=sbbs->timeout; - break; - case CON_PROP_TIMELEFT_WARN: - val=sbbs->timeleft_warn; - break; - default: - return(JS_TRUE); - } - - *vp = INT_TO_JSVAL(val); - - return(JS_TRUE); -} - -static JSBool js_console_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - long val; - jsint tiny; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - tiny = JSVAL_TO_INT(id); - - JS_ValueToInt32(cx, *vp, &val); - - switch(tiny) { - case CON_PROP_ONLINE: - sbbs->online=val; - break; - case CON_PROP_STATUS: - sbbs->console=val; - break; - case CON_PROP_LNCNTR: - sbbs->lncntr=val; - break; - case CON_PROP_TOS: - sbbs->tos=val; - break; - case CON_PROP_ROWS: - sbbs->rows=val; - break; - case CON_PROP_AUTOTERM: - sbbs->autoterm=val; - break; - case CON_PROP_TIMEOUT: - sbbs->timeout=val; - break; - case CON_PROP_TIMELEFT_WARN: - sbbs->timeleft_warn=val; - break; - default: - return(JS_TRUE); - } - - return(JS_TRUE); -} - -#define CON_PROP_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY - -static struct JSPropertySpec js_console_properties[] = { -/* name ,tinyid ,flags ,getter,setter */ - - { "online" ,CON_PROP_ONLINE ,CON_PROP_FLAGS ,NULL,NULL}, - { "status" ,CON_PROP_STATUS ,CON_PROP_FLAGS ,NULL,NULL}, - { "line_counter" ,CON_PROP_LNCNTR ,CON_PROP_FLAGS ,NULL,NULL}, - { "top_of_screen" ,CON_PROP_TOS ,CON_PROP_FLAGS ,NULL,NULL}, - { "rows" ,CON_PROP_ROWS ,CON_PROP_FLAGS ,NULL,NULL}, - { "autoterm" ,CON_PROP_AUTOTERM ,CON_PROP_FLAGS ,NULL,NULL}, - { "timeout" ,CON_PROP_TIMEOUT ,CON_PROP_FLAGS ,NULL,NULL}, - { "timeleft_warning" ,CON_PROP_TIMELEFT_WARN ,CON_PROP_FLAGS ,NULL,NULL}, - {0} -}; - -/**************************/ -/* Console Object Methods */ -/**************************/ - -static JSBool -js_inkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char key[2]; - long mode=0; - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc && JSVAL_IS_INT(argv[0])) - mode=JSVAL_TO_INT(argv[0]); - key[0]=sbbs->inkey(mode); - key[1]=0; - - js_str = JS_NewStringCopyZ(cx, key); - *rval = STRING_TO_JSVAL(js_str); - - return(JS_TRUE); -} - -static JSBool -js_getkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char key[2]; - long mode=0; - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc && JSVAL_IS_INT(argv[0])) - mode=JSVAL_TO_INT(argv[0]); - key[0]=sbbs->getkey(mode); - key[1]=0; - - js_str = JS_NewStringCopyZ(cx, key); - *rval = STRING_TO_JSVAL(js_str); - - return(JS_TRUE); -} - -static JSBool -js_getstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char *p; - long mode=0; - uintN i; - size_t maxlen=0; - sbbs_t* sbbs; - JSString* js_str=NULL; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - for(i=0;i<argc;i++) { - if(JSVAL_IS_INT(argv[i])) { - if(!maxlen) - maxlen=JSVAL_TO_INT(argv[i]); - else - mode=JSVAL_TO_INT(argv[i]); - continue; - } - if(JSVAL_IS_STRING(argv[i])) { - js_str = JS_ValueToString(cx, argv[i]); - if (!js_str) - return(JS_FALSE); - } - } - - if(!maxlen) maxlen=128; - - if((p=(char *)calloc(1,maxlen+1))==NULL) - return(JS_FALSE); - - if(js_str!=NULL) - sprintf(p,"%.*s",maxlen,JS_GetStringBytes(js_str)); - - sbbs->getstr(p,maxlen,mode); - - js_str = JS_NewStringCopyZ(cx, p); - - free(p); - - *rval = STRING_TO_JSVAL(js_str); - - return(JS_TRUE); -} - -static JSBool -js_getnum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - ulong maxnum=~0; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc && JSVAL_IS_INT(argv[0])) - maxnum=JSVAL_TO_INT(argv[0]); - - *rval = INT_TO_JSVAL(sbbs->getnum(maxnum)); - - return(JS_TRUE); -} - -static JSBool -js_getkeys(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char key[2]; - uintN i; - long val; - ulong maxnum=~0; - sbbs_t* sbbs; - JSString* js_str=NULL; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - for(i=0;i<argc;i++) { - if(JSVAL_IS_INT(argv[i])) { - maxnum=JSVAL_TO_INT(argv[i]); - continue; - } - if(JSVAL_IS_STRING(argv[i])) { - js_str = JS_ValueToString(cx, argv[i]); - } - } - if (!js_str) - return(JS_FALSE); - - val=sbbs->getkeys(JS_GetStringBytes(js_str),maxnum); - - if(val==-1) { // abort - *rval = INT_TO_JSVAL(0); - } else if(val<0) { // number - val&=~0x80000000; - *rval = INT_TO_JSVAL(val); - } else { // key - key[0]=(uchar)val; - key[1]=0; - js_str = JS_NewStringCopyZ(cx, key); - *rval = STRING_TO_JSVAL(js_str); - } - - return(JS_TRUE); -} - -static JSBool -js_gettemplate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char str[128]; - long mode=0; - uintN i; - sbbs_t* sbbs; - JSString* js_str=NULL; - JSString* js_fmt=NULL; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - for(i=0;i<argc;i++) { - if(JSVAL_IS_STRING(argv[i])) { - if(js_fmt==NULL) - js_fmt = JS_ValueToString(cx, argv[i]); - else - js_str = JS_ValueToString(cx, argv[i]); - } else if (JSVAL_IS_INT(argv[i])) - mode=JSVAL_TO_INT(argv[i]); - } - - if(js_fmt==NULL) - return(JS_FALSE); - - if(js_str==NULL) - str[0]=0; - else - sprintf(str, "%.*s", sizeof(str)-1, JS_GetStringBytes(js_str)); - - sbbs->gettmplt(str,JS_GetStringBytes(js_fmt),mode); - js_str = JS_NewStringCopyZ(cx, str); - *rval = STRING_TO_JSVAL(js_str); - - return(JS_TRUE); -} - -static JSBool -js_ungetstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char* p; - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if((js_str=JS_ValueToString(cx, argv[0]))==NULL) - return(JS_FALSE); - - p=JS_GetStringBytes(js_str); - - while(p && *p) - sbbs->ungetkey(*(p++)); - - return(JS_TRUE); -} - -static JSBool -js_yesno(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if((js_str=JS_ValueToString(cx, argv[0]))==NULL) - return(JS_FALSE); - - *rval = BOOLEAN_TO_JSVAL(sbbs->yesno(JS_GetStringBytes(js_str))); - - return(JS_TRUE); -} - -static JSBool -js_noyes(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if((js_str=JS_ValueToString(cx, argv[0]))==NULL) - return(JS_FALSE); - - *rval = BOOLEAN_TO_JSVAL(sbbs->noyes(JS_GetStringBytes(js_str))); - - return(JS_TRUE); -} - -static JSBool -js_mnemonics(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if((js_str=JS_ValueToString(cx, argv[0]))==NULL) - return(JS_FALSE); - - sbbs->mnemonics(JS_GetStringBytes(js_str)); - - return(JS_TRUE); -} - -static JSBool -js_clear(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->CLS; - - return(JS_TRUE); -} - -static JSBool -js_clearline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->clearline(); - - return(JS_TRUE); -} - -static JSBool -js_crlf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->outchar(CR); - sbbs->outchar(LF); - - return(JS_TRUE); -} - -static JSBool -js_attr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->attr(JSVAL_TO_INT(argv[0])); - - return(JS_TRUE); -} - -static JSBool -js_pause(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->pause(); - - return(JS_TRUE); -} - -static JSBool -js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - JSString* str; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return(JS_FALSE); - - sbbs->bputs(JS_GetStringBytes(str)); - - return(JS_TRUE); -} - -static JSBool -js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - JSString* str; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return(JS_FALSE); - - sbbs->rputs(JS_GetStringBytes(str)); - - return(JS_TRUE); -} - -static JSBool -js_putmsg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - long mode=0; - JSString* str; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return(JS_FALSE); - - if(argc>1 && JSVAL_IS_INT(argv[1])) - mode=JSVAL_TO_INT(argv[1]); - - sbbs->putmsg(JS_GetStringBytes(str),mode); - - return(JS_TRUE); -} - -static JSBool -js_printfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - long mode=0; - JSString* str; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return(JS_FALSE); - - if(argc>1 && JSVAL_IS_INT(argv[1])) - mode=JSVAL_TO_INT(argv[1]); - - sbbs->printfile(JS_GetStringBytes(str),mode); - - return(JS_TRUE); -} - -static JSBool -js_printtail(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - int lines=0; - long mode=0; - uintN i; - sbbs_t* sbbs; - JSString* js_str=NULL; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - for(i=0;i<argc;i++) { - if(JSVAL_IS_INT(argv[i])) { - if(!lines) - lines=JSVAL_TO_INT(argv[i]); - else - mode=JSVAL_TO_INT(argv[i]); - } else if(JSVAL_IS_STRING(argv[i])) - js_str = JS_ValueToString(cx, argv[i]); - } - - if(js_str==NULL) - return(JS_FALSE); - - if(!lines) - lines=5; - - sbbs->printtail(JS_GetStringBytes(js_str),lines,mode); - - return(JS_TRUE); -} - -static JSBool -js_menu(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - JSString* str; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return(JS_FALSE); - - sbbs->menu(JS_GetStringBytes(str)); - - return(JS_TRUE); -} - -static JSBool -js_uselect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - uintN i; - int num=0; - char* title; - char* item; - char* ar_str; - uchar* ar; - sbbs_t* sbbs; - JSString* js_str; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(!argc) { - *rval = INT_TO_JSVAL(sbbs->uselect(0,0,NULL,NULL,NULL)); - return(JS_TRUE); - } - - for(i=0;i<argc;i++) { - if(!JSVAL_IS_STRING(argv[i])) { - num = JSVAL_TO_INT(argv[i]); - continue; - } - if((js_str=JS_ValueToString(cx, argv[i]))==NULL) - return(JS_FALSE); - - if(title==NULL) - title=JS_GetStringBytes(js_str); - else if(item==NULL) - item=JS_GetStringBytes(js_str); - else { - ar_str=JS_GetStringBytes(js_str); - ar=arstr(NULL,ar_str,&sbbs->cfg); - } - } - - *rval = INT_TO_JSVAL(sbbs->uselect(1, num, title, item, ar)); - - return(JS_TRUE); -} - -static JSBool -js_center(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - JSString* str; - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return(JS_FALSE); - - sbbs->center(JS_GetStringBytes(str)); - - return(JS_TRUE); -} - -static JSBool -js_saveline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->slatr[sbbs->slcnt]=sbbs->latr; - sprintf(sbbs->slbuf[sbbs->slcnt<SAVE_LINES ? sbbs->slcnt++ : sbbs->slcnt] - ,"%.*s",sbbs->lbuflen,sbbs->lbuf); - sbbs->lbuflen=0; - - return(JS_TRUE); -} - -static JSBool -js_restoreline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->lbuflen=0; - sbbs->attr(sbbs->slatr[--sbbs->slcnt]); - sbbs->rputs(sbbs->slbuf[sbbs->slcnt]); - sbbs->curatr=LIGHTGRAY; - - return(JS_TRUE); -} - -static JSBool -js_ansi_save(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->ANSI_SAVE(); - - return(JS_TRUE); -} - - -static JSBool -js_ansi_restore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->ANSI_RESTORE(); - - return(JS_TRUE); -} - -static JSBool -js_ansi_gotoxy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if(argc<2) - return(JS_FALSE); - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->GOTOXY(JSVAL_TO_INT(argv[0]),JSVAL_TO_INT(argv[1])); - - return(JS_TRUE); -} - -static JSBool -js_ansi_up(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc) - sbbs->rprintf("\x1b[%dA",JSVAL_TO_INT(argv[0])); - else - sbbs->rputs("\x1b[A"); - - return(JS_TRUE); -} - -static JSBool -js_ansi_down(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc) - sbbs->rprintf("\x1b[%dB",JSVAL_TO_INT(argv[0])); - else - sbbs->rputs("\x1b[B"); - - return(JS_TRUE); -} - -static JSBool -js_ansi_right(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc) - sbbs->rprintf("\x1b[%dC",JSVAL_TO_INT(argv[0])); - else - sbbs->rputs("\x1b[C"); - - return(JS_TRUE); -} - -static JSBool -js_ansi_left(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - if(argc) - sbbs->rprintf("\x1b[%dD",JSVAL_TO_INT(argv[0])); - else - sbbs->rputs("\x1b[D"); - - return(JS_TRUE); -} - -static JSBool -js_ansi_getlines(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - sbbs_t* sbbs; - - if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) - return(JS_FALSE); - - sbbs->ansi_getlines(); - - return(JS_TRUE); -} - -static JSFunctionSpec js_console_functions[] = { - {"inkey", js_inkey, 0}, // get key - no wait - {"getkey", js_getkey, 0}, // get key - with wait - {"getstr", js_getstr, 0}, // get string - {"getnum", js_getnum, 0}, // get number - {"getkeys", js_getkeys, 1}, // get one of a list of keys - {"gettemplate", js_gettemplate, 1}, // get a string based on template - {"ungetstr", js_ungetstr, 1}, // put a string in the keyboard buffer - {"yesno", js_yesno, 1}, // Y/n question - {"noyes", js_noyes, 1}, // N/y question - {"mnemonics", js_mnemonics, 1}, // mnemonics input - {"clear", js_clear, 0}, // clear screen - {"clearline", js_clearline, 0}, // clear current line - {"crlf", js_crlf, 0}, // output cr/lf - {"attr", js_attr, 1}, // set current text attribute - {"pause", js_pause, 0}, // pause - {"print", js_print, 1}, // display a string (supports ^A and @-codes) - {"write", js_write, 1}, // display a raw string - {"putmsg", js_putmsg, 1}, // display message text (^A, @-codes, etc) with mode - {"center", js_center, 1}, // display a string centered on the screen - {"printfile", js_printfile, 1}, // print a file, optional mode - {"printtail", js_printtail, 2}, // print last x lines of file, optional mode - {"menu", js_menu, 1}, // print menu (auto-extension) - {"uselect", js_uselect, 0}, // user selection menu - {"saveline", js_saveline, 0}, // save last output line - {"restoreline", js_restoreline, 0}, // restore last output line - {"ansi_pushxy", js_ansi_save, 0}, - {"ansi_popxy", js_ansi_restore, 0}, - {"ansi_gotoxy", js_ansi_gotoxy, 2}, - {"ansi_up", js_ansi_up, 0}, - {"ansi_down", js_ansi_down, 0}, - {"ansi_right", js_ansi_right, 0}, - {"ansi_left", js_ansi_left, 0}, - {"ansi_getlines", js_ansi_getlines, 0}, - {0} -}; - - -static JSClass js_console_class = { - "Console" /* name */ - ,0 /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,js_console_get /* getProperty */ - ,js_console_set /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - -JSObject* js_CreateConsoleObject(JSContext* cx, JSObject* parent) -{ - JSObject* obj; - - obj = JS_DefineObject(cx, parent, "console", &js_console_class, NULL, 0); - - if(obj==NULL) - return(NULL); - - if(!JS_DefineProperties(cx, obj, js_console_properties)) - return(NULL); - - if (!JS_DefineFunctions(cx, obj, js_console_functions)) - return(NULL); - - return(obj); -} - -#endif /* JAVSCRIPT */ \ No newline at end of file diff --git a/src/sbbs3/fileobj.c b/src/sbbs3/fileobj.c deleted file mode 100644 index 6a54f995696e93e0beb84fa51bb28be0f7960ce2..0000000000000000000000000000000000000000 --- a/src/sbbs3/fileobj.c +++ /dev/null @@ -1,158 +0,0 @@ -/* fileobj.c */ - -/* Synchronet JavaScript "File Area" Object */ - -/* $Id$ */ - -/**************************************************************************** - * @format.tab-size 4 (Plain Text/Source Code File Header) * - * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * - * * - * Copyright 2001 Rob Swindell - http://www.synchro.net/copyright.html * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License * - * as published by the Free Software Foundation; either version 2 * - * of the License, or (at your option) any later version. * - * See the GNU General Public License for more details: gpl.txt or * - * http://www.fsf.org/copyleft/gpl.html * - * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * - * For Synchronet coding style and modification guidelines, see * - * http://www.synchro.net/source.html * - * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * - * Note: If this box doesn't appear square, then you need to fix your tabs. * - ****************************************************************************/ - -#include "sbbs.h" - -#ifdef JAVASCRIPT - -static JSClass js_file_area_class = { - "FileArea" /* name */ - ,JSCLASS_HAS_PRIVATE /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,JS_PropertyStub /* getProperty */ - ,JS_PropertyStub /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - -JSObject* DLLCALL js_CreateFileAreaObject(scfg_t* cfg, JSContext* cx, JSObject* parent, user_t* user - ,char* html_index_file) -{ - char vpath[MAX_PATH+1]; - JSObject* areaobj; - JSObject* libobj; - JSObject* dirobj; - JSObject* lib_list; - JSObject* dir_list; - jsval val; - jsint index; - uint l,d; - - areaobj = JS_DefineObject(cx, parent, "file_area", &js_file_area_class, NULL, 0); - - if(areaobj==NULL) - return(NULL); - - /* lib_list[] */ - if((lib_list=JS_NewArrayObject(cx, 0, NULL))==NULL) - return(NULL); - - val=OBJECT_TO_JSVAL(lib_list); - if(!JS_SetProperty(cx, areaobj, "lib_list", &val)) - return(NULL); - - for(l=0;l<cfg->total_libs;l++) { - - if(!chk_ar(cfg,cfg->lib[l]->ar,user)) - continue; - - if((libobj=JS_NewObject(cx, &js_file_area_class, NULL, NULL))==NULL) - return(NULL); - - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->lib[l]->sname)); - if(!JS_SetProperty(cx, libobj, "name", &val)) - return(NULL); - - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->lib[l]->lname)); - if(!JS_SetProperty(cx, libobj, "description", &val)) - return(NULL); - - sprintf(vpath,"/%s/%s",cfg->lib[l]->sname,html_index_file); - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, vpath)); - if(!JS_SetProperty(cx, libobj, "link", &val)) - return(NULL); - - /* dir_list[] */ - if((dir_list=JS_NewArrayObject(cx, 0, NULL))==NULL) - return(NULL); - - val=OBJECT_TO_JSVAL(dir_list); - if(!JS_SetProperty(cx, libobj, "dir_list", &val)) - return(NULL); - - - for(d=0;d<cfg->total_dirs;d++) { - if(cfg->dir[d]->lib!=l) - continue; - if(!chk_ar(cfg,cfg->dir[d]->ar,user)) - continue; - - if((dirobj=JS_NewObject(cx, &js_file_area_class, NULL, NULL))==NULL) - return(NULL); - - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->code)); - if(!JS_SetProperty(cx, dirobj, "code", &val)) - return(NULL); - - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->sname)); - if(!JS_SetProperty(cx, dirobj, "name", &val)) - return(NULL); - - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->lname)); - if(!JS_SetProperty(cx, dirobj, "description", &val)) - return(NULL); - - sprintf(vpath,"/%s/%s/%s" - ,cfg->lib[l]->sname - ,cfg->dir[d]->code - ,html_index_file); - - val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, vpath)); - if(!JS_SetProperty(cx, dirobj, "link", &val)) - return(NULL); - - if(!JS_GetArrayLength(cx, dir_list, &index)) - return(NULL); - - val=OBJECT_TO_JSVAL(dirobj); - JS_SetElement(cx, dir_list, index, &val); - } - - if(!JS_GetArrayLength(cx, lib_list, &index)) - return(NULL); - - val=OBJECT_TO_JSVAL(libobj); - JS_SetElement(cx, lib_list, index, &val); - } - - return(areaobj); -} - -#endif /* JAVSCRIPT */ \ No newline at end of file diff --git a/src/sbbs3/globobj.c b/src/sbbs3/globobj.c deleted file mode 100644 index 1ddfbd821d5ddbd223f36618d71c02ef4f3ee634..0000000000000000000000000000000000000000 --- a/src/sbbs3/globobj.c +++ /dev/null @@ -1,185 +0,0 @@ -/* globobj.c */ - -/* Synchronet JavaScript "global" object properties/methods for all servers */ - -/* $Id$ */ - -/**************************************************************************** - * @format.tab-size 4 (Plain Text/Source Code File Header) * - * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * - * * - * Copyright 2001 Rob Swindell - http://www.synchro.net/copyright.html * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License * - * as published by the Free Software Foundation; either version 2 * - * of the License, or (at your option) any later version. * - * See the GNU General Public License for more details: gpl.txt or * - * http://www.fsf.org/copyleft/gpl.html * - * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * - * For Synchronet coding style and modification guidelines, see * - * http://www.synchro.net/source.html * - * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * - * Note: If this box doesn't appear square, then you need to fix your tabs. * - ****************************************************************************/ - -#include "sbbs.h" - -#ifdef JAVASCRIPT - -static JSBool -js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char path[MAX_PATH+1]; - uintN i; - JSString* str; - const char* filename; - JSScript* script; - JSBool ok; - jsval result; - scfg_t* cfg; - - if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) - return JS_FALSE; - - for (i = 0; i < argc; i++) { - str = JS_ValueToString(cx, argv[i]); - if (!str) - return JS_FALSE; - argv[i] = STRING_TO_JSVAL(str); - filename = JS_GetStringBytes(str); - errno = 0; - if(!strchr(filename,BACKSLASH)) - sprintf(path,"%s%s",cfg->exec_dir,filename); - else - strcpy(path,filename); - script = JS_CompileFile(cx, obj, path); - if (!script) - ok = JS_FALSE; - else { - ok = JS_ExecuteScript(cx, obj, script, &result); - JS_DestroyScript(cx, script); - } - if (!ok) - return JS_FALSE; - } - - return JS_TRUE; -} - -static JSBool -js_format(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - char tmp[1024]; - uintN i; - JSString * fmt; - JSString * str; - va_list arglist[64]; - - fmt = JS_ValueToString(cx, argv[0]); - if (!fmt) - return JS_FALSE; - - for (i = 1; i < argc && i<sizeof(arglist)/sizeof(arglist[0]); i++) { - if(JSVAL_IS_STRING(argv[i])) { - str = JS_ValueToString(cx, argv[i]); - if (!str) - return JS_FALSE; - arglist[i-1]=JS_GetStringBytes(str); - } else if(JSVAL_IS_INT(argv[i])) - arglist[i-1]=(char *)JSVAL_TO_INT(argv[i]); - else - arglist[i-1]=NULL; - } - - vsprintf(tmp,JS_GetStringBytes(fmt),(char*)arglist); - - str = JS_NewStringCopyZ(cx, tmp); - *rval = STRING_TO_JSVAL(str); - - return JS_TRUE; -} - -static JSBool -js_mswait(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - int val=1; - - if(argc) - val=JSVAL_TO_INT(argv[0]); - mswait(val); - - return(JS_TRUE); -} - -static JSBool -js_beep(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - int freq=500; - int dur=500; - - if(argc) - freq=JSVAL_TO_INT(argv[0]); - if(argc>1) - dur=JSVAL_TO_INT(argv[1]); - - sbbs_beep(freq,dur); - - return(JS_TRUE); -} - -static JSBool -js_exit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - return(JS_FALSE); -} - -static JSClass js_global_class ={ - "Global", - JSCLASS_HAS_PRIVATE, /* needed for scfg_t ptr */ - JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,JS_PropertyStub, - JS_EnumerateStub,JS_ResolveStub,JS_ConvertStub,JS_FinalizeStub - }; - -static JSFunctionSpec js_global_functions[] = { - {"exit", js_exit, 0}, /* stop execution */ - {"load", js_load, 1}, /* Load and execute a javascript file */ - {"format", js_format, 1}, /* return a formatted string (ala printf) */ - {"mswait", js_mswait, 0}, /* millisecond wait/sleep routine */ - {"sleep", js_mswait, 0}, /* millisecond wait/sleep routine */ - {"beep", js_beep, 0}, /* local beep (freq, dur) */ - {0} -}; - -JSObject* DLLCALL js_CreateGlobalObject(scfg_t* cfg, JSContext* cx) -{ - JSObject* glob; - - if((glob = JS_NewObject(cx, &js_global_class, NULL, NULL)) ==NULL) - return(NULL); - - if (!JS_InitStandardClasses(cx, glob)) - return(NULL); - - if (!JS_DefineFunctions(cx, glob, js_global_functions)) - return(NULL); - - if(!JS_SetPrivate(cx, glob, cfg)) /* Store a pointer to scfg_t */ - return(NULL); - - return(glob); -} - -#endif /* JAVSCRIPT */ \ No newline at end of file diff --git a/src/sbbs3/sysobj.c b/src/sbbs3/sysobj.c deleted file mode 100644 index 0cea42390c82b4b28695338cdde48c65e60b3baa..0000000000000000000000000000000000000000 --- a/src/sbbs3/sysobj.c +++ /dev/null @@ -1,417 +0,0 @@ -/* sysobj.c */ - -/* Synchronet JavaScript "system" Object */ - -/* $Id$ */ - -/**************************************************************************** - * @format.tab-size 4 (Plain Text/Source Code File Header) * - * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * - * * - * Copyright 2001 Rob Swindell - http://www.synchro.net/copyright.html * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License * - * as published by the Free Software Foundation; either version 2 * - * of the License, or (at your option) any later version. * - * See the GNU General Public License for more details: gpl.txt or * - * http://www.fsf.org/copyleft/gpl.html * - * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * - * For Synchronet coding style and modification guidelines, see * - * http://www.synchro.net/source.html * - * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * - * Note: If this box doesn't appear square, then you need to fix your tabs. * - ****************************************************************************/ - -#include "sbbs.h" - -#ifdef JAVASCRIPT - -/* System Object Properites */ -enum { - SYS_PROP_NAME - ,SYS_PROP_OP - ,SYS_PROP_ID - ,SYS_PROP_MISC - ,SYS_PROP_PSNAME - ,SYS_PROP_PSNUM - ,SYS_PROP_INETADDR - ,SYS_PROP_LOCATION - ,SYS_PROP_TIMEZONE - ,SYS_PROP_NODES - ,SYS_PROP_LASTNODE - ,SYS_PROP_PWDAYS - ,SYS_PROP_DELDAYS - - ,SYS_PROP_LASTUSERON - ,SYS_PROP_FREEDISKSPACE - -}; - -static JSBool js_system_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - jsint tiny; - scfg_t* cfg; - - if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) - return JS_FALSE; - - tiny = JSVAL_TO_INT(id); - - switch(tiny) { - case SYS_PROP_NAME: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->sys_name)); - break; - case SYS_PROP_OP: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->sys_op)); - break; - case SYS_PROP_ID: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->sys_id)); - break; - case SYS_PROP_MISC: - *vp = INT_TO_JSVAL(cfg->sys_misc); - break; - case SYS_PROP_PSNAME: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->sys_psname)); - break; - case SYS_PROP_PSNUM: - *vp = INT_TO_JSVAL(cfg->sys_psnum); - break; - case SYS_PROP_INETADDR: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->sys_inetaddr)); - break; - case SYS_PROP_LOCATION: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->sys_location)); - break; - case SYS_PROP_TIMEZONE: - *vp = INT_TO_JSVAL(cfg->sys_timezone); - break; - case SYS_PROP_NODES: - *vp = INT_TO_JSVAL(cfg->sys_nodes); - break; - case SYS_PROP_LASTNODE: - *vp = INT_TO_JSVAL(cfg->sys_lastnode); - break; - case SYS_PROP_PWDAYS: - *vp = INT_TO_JSVAL(cfg->sys_pwdays); - break; - case SYS_PROP_DELDAYS: - *vp = INT_TO_JSVAL(cfg->sys_deldays); - break; - - case SYS_PROP_LASTUSERON: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, lastuseron)); - break; - case SYS_PROP_FREEDISKSPACE: - *vp = INT_TO_JSVAL(getfreediskspace(cfg->temp_dir)); - break; - - } - - return(TRUE); -} - -static JSBool js_system_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - jsint tiny; - scfg_t* cfg; - - if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) - return JS_FALSE; - - tiny = JSVAL_TO_INT(id); - - switch(tiny) { - case SYS_PROP_MISC: - JS_ValueToInt32(cx, *vp, &cfg->sys_misc); - break; - } - - return(TRUE); -} - - -#define SYSOBJ_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY - -static struct JSPropertySpec js_system_properties[] = { -/* name, tinyid, flags, getter, setter */ - - { "name", SYS_PROP_NAME, SYSOBJ_FLAGS, NULL, NULL }, - { "operator", SYS_PROP_OP, SYSOBJ_FLAGS, NULL, NULL }, - { "qwk_id", SYS_PROP_ID, SYSOBJ_FLAGS, NULL, NULL }, - { "settings", SYS_PROP_MISC, JSPROP_ENUMERATE, NULL, NULL }, - { "psname", SYS_PROP_PSNAME, SYSOBJ_FLAGS, NULL, NULL }, - { "psnum", SYS_PROP_PSNUM, SYSOBJ_FLAGS, NULL, NULL }, - { "inetaddr", SYS_PROP_INETADDR, SYSOBJ_FLAGS, NULL, NULL }, - { "location", SYS_PROP_LOCATION, SYSOBJ_FLAGS, NULL, NULL }, - { "timezone", SYS_PROP_TIMEZONE, SYSOBJ_FLAGS, NULL, NULL }, - { "nodes", SYS_PROP_NODES, SYSOBJ_FLAGS, NULL, NULL }, - { "lastnode", SYS_PROP_LASTNODE, SYSOBJ_FLAGS, NULL, NULL }, - { "pwdays", SYS_PROP_PWDAYS, SYSOBJ_FLAGS, NULL, NULL }, - { "deldays", SYS_PROP_DELDAYS, SYSOBJ_FLAGS, NULL, NULL }, - { "freediskspace", SYS_PROP_FREEDISKSPACE, SYSOBJ_FLAGS, NULL, NULL }, - {0} -}; - -static JSClass js_system_class = { - "System" /* name */ - ,JSCLASS_HAS_PRIVATE /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,js_system_get /* getProperty */ - ,js_system_set /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - -/* System Stats Propertiess */ -enum { - SYSSTAT_PROP_LOGONS - ,SYSSTAT_PROP_LTODAY - ,SYSSTAT_PROP_TIMEON - ,SYSSTAT_PROP_TTODAY - ,SYSSTAT_PROP_ULS - ,SYSSTAT_PROP_ULB - ,SYSSTAT_PROP_DLS - ,SYSSTAT_PROP_DLB - ,SYSSTAT_PROP_PTODAY - ,SYSSTAT_PROP_ETODAY - ,SYSSTAT_PROP_FTODAY - ,SYSSTAT_PROP_NUSERS - - ,SYSSTAT_PROP_TOTALUSERS - ,SYSSTAT_PROP_TOTALFILES - ,SYSSTAT_PROP_TOTALMSGS - ,SYSSTAT_PROP_TOTALMAIL - ,SYSSTAT_PROP_FEEDBACK - -}; - -static JSBool js_sysstats_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - jsint tiny; - scfg_t* cfg; - stats_t stats; - uint i; - ulong l; - - if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) - return JS_FALSE; - - tiny = JSVAL_TO_INT(id); - - if(!getstats(cfg, 0, &stats)) - return(FALSE); - - switch(tiny) { - case SYSSTAT_PROP_LOGONS: - *vp = INT_TO_JSVAL(stats.logons); - break; - case SYSSTAT_PROP_LTODAY: - *vp = INT_TO_JSVAL(stats.ltoday); - break; - case SYSSTAT_PROP_TIMEON: - *vp = INT_TO_JSVAL(stats.timeon); - break; - case SYSSTAT_PROP_TTODAY: - *vp = INT_TO_JSVAL(stats.ttoday); - break; - case SYSSTAT_PROP_ULS: - *vp = INT_TO_JSVAL(stats.uls); - break; - case SYSSTAT_PROP_ULB: - *vp = INT_TO_JSVAL(stats.ulb); - break; - case SYSSTAT_PROP_DLS: - *vp = INT_TO_JSVAL(stats.dls); - break; - case SYSSTAT_PROP_DLB: - *vp = INT_TO_JSVAL(stats.dlb); - break; - case SYSSTAT_PROP_PTODAY: - *vp = INT_TO_JSVAL(stats.ptoday); - break; - case SYSSTAT_PROP_ETODAY: - *vp = INT_TO_JSVAL(stats.etoday); - break; - case SYSSTAT_PROP_FTODAY: - *vp = INT_TO_JSVAL(stats.ftoday); - break; - case SYSSTAT_PROP_NUSERS: - *vp = INT_TO_JSVAL(stats.nusers); - break; - - case SYSSTAT_PROP_TOTALUSERS: - *vp = INT_TO_JSVAL(lastuser(cfg)); - break; - case SYSSTAT_PROP_TOTALMSGS: - l=0; - for(i=0;i<cfg->total_subs;i++) - l+=getposts(cfg,i); - *vp = INT_TO_JSVAL(l); - break; - case SYSSTAT_PROP_TOTALFILES: - l=0; - for(i=0;i<cfg->total_dirs;i++) - l+=getfiles(cfg,i); - *vp = INT_TO_JSVAL(l); - break; - case SYSSTAT_PROP_TOTALMAIL: - *vp = INT_TO_JSVAL(getmail(cfg, 0,0)); - break; - case SYSSTAT_PROP_FEEDBACK: - *vp = INT_TO_JSVAL(getmail(cfg, 1,0)); - break; - } - - return(TRUE); -} - -#define SYSSTAT_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY - -static struct JSPropertySpec js_sysstats_properties[] = { -/* name, tinyid, flags, getter, setter */ - - { "total_logons", SYSSTAT_PROP_LOGONS, SYSSTAT_FLAGS, NULL, NULL }, - { "logons_today", SYSSTAT_PROP_LTODAY, SYSSTAT_FLAGS, NULL, NULL }, - { "total_timeon", SYSSTAT_PROP_TIMEON, SYSSTAT_FLAGS, NULL, NULL }, - { "timeon_today", SYSSTAT_PROP_TTODAY, SYSSTAT_FLAGS, NULL, NULL }, - { "total_files", SYSSTAT_PROP_TOTALFILES, SYSSTAT_FLAGS, NULL, NULL }, - { "files_uploaded_today", SYSSTAT_PROP_ULS, SYSSTAT_FLAGS, NULL, NULL }, - { "bytes_uploaded_today", SYSSTAT_PROP_ULB, SYSSTAT_FLAGS, NULL, NULL }, - { "files_downloaded_today", SYSSTAT_PROP_DLS, SYSSTAT_FLAGS, NULL, NULL }, - { "bytes_downloaded_today", SYSSTAT_PROP_DLB, SYSSTAT_FLAGS, NULL, NULL }, - { "total_messages", SYSSTAT_PROP_TOTALMSGS, SYSSTAT_FLAGS, NULL, NULL }, - { "messages_posted_today", SYSSTAT_PROP_PTODAY, SYSSTAT_FLAGS, NULL, NULL }, - { "total_email", SYSSTAT_PROP_TOTALMAIL, SYSSTAT_FLAGS, NULL, NULL }, - { "email_sent_today", SYSSTAT_PROP_ETODAY, SYSSTAT_FLAGS, NULL, NULL }, - { "total_feedback", SYSSTAT_PROP_FEEDBACK, SYSSTAT_FLAGS, NULL, NULL }, - { "feedback_sent_today", SYSSTAT_PROP_FTODAY, SYSSTAT_FLAGS, NULL, NULL }, - { "total_users", SYSSTAT_PROP_TOTALUSERS, SYSSTAT_FLAGS, NULL, NULL }, - { "new_users_today", SYSSTAT_PROP_NUSERS, SYSSTAT_FLAGS, NULL, NULL }, - {0} -}; - -static JSClass js_sysstats_class = { - "Stats" /* name */ - ,JSCLASS_HAS_PRIVATE /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,js_sysstats_get /* getProperty */ - ,JS_PropertyStub /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - -extern const char* beta_version; - -JSObject* DLLCALL js_CreateSystemObject(scfg_t* cfg, JSContext* cx, JSObject* parent) -{ - char str[256]; - jsval val; - JSObject* sysobj; - JSObject* statsobj; - - sysobj = JS_DefineObject(cx, parent, "system", &js_system_class, NULL, 0); - - if(sysobj==NULL) - return(NULL); - - if(!JS_SetPrivate(cx, sysobj, cfg)) /* Store a pointer to scfg_t */ - return(NULL); - - /****************************/ - /* static string properties */ - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, VERSION)); - if(!JS_SetProperty(cx, sysobj, "version", &val)) - return(NULL); - - sprintf(str,"%c",REVISION); - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str)); - if(!JS_SetProperty(cx, sysobj, "revision", &val)) - return(NULL); - - sprintf(str,"%s%c%s",VERSION,REVISION,beta_version); - truncsp(str); -#if defined(_DEBUG) - strcat(str," Debug"); -#endif - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str)); - if(!JS_SetProperty(cx, sysobj, "full_version", &val)) - return(NULL); - - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, VERSION_NOTICE)); - if(!JS_SetProperty(cx, sysobj, "version_notice", &val)) - return(NULL); - - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, PLATFORM_DESC)); - if(!JS_SetProperty(cx, sysobj, "platform", &val)) - return(NULL); - - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, socklib_version(str))); - if(!JS_SetProperty(cx, sysobj, "socket_lib", &val)) - return(NULL); - - sprintf(str,"SMBLIB %s",smb_lib_ver()); - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str)); - if(!JS_SetProperty(cx, sysobj, "msgbase_lib", &val)) - return(NULL); - - COMPILER_DESC(str); - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str)); - if(!JS_SetProperty(cx, sysobj, "compiled_with", &val)) - return(NULL); - - sprintf(str,"%s %.5s",__DATE__,__TIME__); - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str)); - if(!JS_SetProperty(cx, sysobj, "compiled_when", &val)) - return(NULL); - - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, COPYRIGHT_NOTICE)); - if(!JS_SetProperty(cx, sysobj, "copyright", &val)) - return(NULL); - - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx - ,(char *)JS_GetImplementationVersion())); - if(!JS_SetProperty(cx, sysobj, "js_version", &val)) - return(NULL); - - val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,os_version(str))); - if(!JS_SetProperty(cx, sysobj, "os_version", &val)) - return(NULL); - - /***********************/ - - if(!JS_DefineProperties(cx, sysobj, js_system_properties)) - return(NULL); - - statsobj = JS_DefineObject(cx, sysobj, "stats", &js_sysstats_class, NULL, 0); - - if(statsobj==NULL) - return(NULL); - - JS_SetPrivate(cx, statsobj, cfg); /* Store a pointer to scfg_t */ - - if(!JS_DefineProperties(cx, statsobj, js_sysstats_properties)) - return(NULL); - - return(sysobj); -} - -#endif /* JAVSCRIPT */ \ No newline at end of file diff --git a/src/sbbs3/userobj.c b/src/sbbs3/userobj.c deleted file mode 100644 index 8b911acf70db9e87dc8a9aa92bf1cb6c9bc578cd..0000000000000000000000000000000000000000 --- a/src/sbbs3/userobj.c +++ /dev/null @@ -1,478 +0,0 @@ -/* userobj.c */ - -/* Synchronet JavaScript "User" Object */ - -/* $Id$ */ - -/**************************************************************************** - * @format.tab-size 4 (Plain Text/Source Code File Header) * - * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * - * * - * Copyright 2001 Rob Swindell - http://www.synchro.net/copyright.html * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License * - * as published by the Free Software Foundation; either version 2 * - * of the License, or (at your option) any later version. * - * See the GNU General Public License for more details: gpl.txt or * - * http://www.fsf.org/copyleft/gpl.html * - * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * - * For Synchronet coding style and modification guidelines, see * - * http://www.synchro.net/source.html * - * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * - * Note: If this box doesn't appear square, then you need to fix your tabs. * - ****************************************************************************/ - -#include "sbbs.h" - -#ifdef JAVASCRIPT - -/* User Object Properites */ -enum { - USER_PROP_ALIAS - ,USER_PROP_NAME - ,USER_PROP_HANDLE - ,USER_PROP_NOTE - ,USER_PROP_COMP - ,USER_PROP_COMMENT - ,USER_PROP_NETMAIL - ,USER_PROP_ADDRESS - ,USER_PROP_LOCATION - ,USER_PROP_ZIPCODE - ,USER_PROP_PASS - ,USER_PROP_PHONE - ,USER_PROP_BIRTH - ,USER_PROP_MODEM - ,USER_PROP_LASTON - ,USER_PROP_FIRSTON - ,USER_PROP_EXPIRE - ,USER_PROP_PWMOD - ,USER_PROP_LOGONS - ,USER_PROP_LTODAY - ,USER_PROP_TIMEON - ,USER_PROP_TEXTRA - ,USER_PROP_TTODAY - ,USER_PROP_TLAST - ,USER_PROP_POSTS - ,USER_PROP_EMAILS - ,USER_PROP_FBACKS - ,USER_PROP_ETODAY - ,USER_PROP_PTODAY - ,USER_PROP_ULB - ,USER_PROP_ULS - ,USER_PROP_DLB - ,USER_PROP_DLS - ,USER_PROP_CDT - ,USER_PROP_MIN - ,USER_PROP_LEVEL - ,USER_PROP_FLAGS1 - ,USER_PROP_FLAGS2 - ,USER_PROP_FLAGS3 - ,USER_PROP_FLAGS4 - ,USER_PROP_EXEMPT - ,USER_PROP_REST - ,USER_PROP_ROWS - ,USER_PROP_SEX - ,USER_PROP_MISC - ,USER_PROP_LEECH - ,USER_PROP_CURSUB - ,USER_PROP_CURDIR - ,USER_PROP_FREECDT - ,USER_PROP_XEDIT - ,USER_PROP_SHELL - ,USER_PROP_QWK - ,USER_PROP_TMPEXT - ,USER_PROP_CHAT - ,USER_PROP_NS_TIME - ,USER_PROP_PROT -}; - -static JSBool js_user_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - jsint tiny; - user_t* user; - - if((user=(user_t*)JS_GetPrivate(cx,obj))==NULL) - return JS_FALSE; - - tiny = JSVAL_TO_INT(id); - - switch(tiny) { - case USER_PROP_MISC: - JS_ValueToInt32(cx, *vp, &user->misc); - break; - } - - return(TRUE); -} - -static JSBool js_user_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - char* p=NULL; - char tmp[128]; - ulong val; - jsint tiny; - user_t* user; - - if((user=(user_t*)JS_GetPrivate(cx,obj))==NULL) - return JS_FALSE; - - tiny = JSVAL_TO_INT(id); - - switch(tiny) { - case USER_PROP_ALIAS: - p=user->alias; - break; - case USER_PROP_NAME: - p=user->name; - break; - case USER_PROP_HANDLE: - p=user->handle; - break; - case USER_PROP_NOTE: - p=user->note; - break; - case USER_PROP_COMP: - p=user->comp; - break; - case USER_PROP_COMMENT: - p=user->comment; - break; - case USER_PROP_NETMAIL: - p=user->netmail; - break; - case USER_PROP_ADDRESS: - p=user->address; - break; - case USER_PROP_LOCATION: - p=user->location; - break; - case USER_PROP_ZIPCODE: - p=user->zipcode; - break; - case USER_PROP_PASS: - p=user->pass; - break; - case USER_PROP_PHONE: - p=user->phone; - break; - case USER_PROP_BIRTH: - p=user->birth; - break; - case USER_PROP_MODEM: - p=user->modem; - break; - case USER_PROP_LASTON: - val=user->laston; - break; - case USER_PROP_FIRSTON: - val=user->firston; - break; - case USER_PROP_EXPIRE: - val=user->expire; - break; - case USER_PROP_PWMOD: - val=user->pwmod; - break; - case USER_PROP_LOGONS: - val=user->logons; - break; - case USER_PROP_LTODAY: - val=user->ltoday; - break; - case USER_PROP_TIMEON: - val=user->timeon; - break; - case USER_PROP_TEXTRA: - val=user->textra; - break; - case USER_PROP_TTODAY: - val=user->ttoday; - break; - case USER_PROP_TLAST: - val=user->tlast; - break; - case USER_PROP_POSTS: - val=user->posts; - break; - case USER_PROP_EMAILS: - val=user->emails; - break; - case USER_PROP_FBACKS: - val=user->fbacks; - break; - case USER_PROP_ETODAY: - val=user->etoday; - break; - case USER_PROP_PTODAY: - val=user->ptoday; - break; - case USER_PROP_ULB: - val=user->ulb; - break; - case USER_PROP_ULS: - val=user->uls; - break; - case USER_PROP_DLB: - val=user->dlb; - break; - case USER_PROP_DLS: - val=user->dls; - break; - case USER_PROP_CDT: - val=user->cdt; - break; - case USER_PROP_MIN: - val=user->min; - break; - case USER_PROP_LEVEL: - val=user->level; - break; - case USER_PROP_FLAGS1: - val=user->flags1; - break; - case USER_PROP_FLAGS2: - val=user->flags2; - break; - case USER_PROP_FLAGS3: - val=user->flags3; - break; - case USER_PROP_FLAGS4: - val=user->flags4; - break; - case USER_PROP_EXEMPT: - val=user->exempt; - break; - case USER_PROP_REST: - val=user->rest; - break; - case USER_PROP_ROWS: - val=user->rows; - break; - case USER_PROP_SEX: - sprintf(tmp,"%c",user->sex); - p=tmp; - break; - case USER_PROP_MISC: - val=user->misc; - break; - case USER_PROP_LEECH: - val=user->leech; - break; - case USER_PROP_CURSUB: - p=user->cursub; - break; - case USER_PROP_CURDIR: - p=user->curdir; - break; - case USER_PROP_FREECDT: - val=user->freecdt; - break; - case USER_PROP_XEDIT: - val=user->xedit; - break; - case USER_PROP_SHELL: - val=user->shell; - break; - case USER_PROP_QWK: - val=user->qwk; - break; - case USER_PROP_TMPEXT: - p=user->tmpext; - break; - case USER_PROP_CHAT: - val=user->laston; - break; - case USER_PROP_NS_TIME: - val=user->laston; - break; - case USER_PROP_PROT: - sprintf(tmp,"%c",user->prot); - p=tmp; - break; - default: - return(TRUE); - } - if(p!=NULL) - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, p)); - else - *vp = INT_TO_JSVAL(val); - - return(TRUE); -} - -#define USEROBJ_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY - -static struct JSPropertySpec js_user_properties[] = { -/* name ,tinyid ,flags, getter, setter */ - - { "alias" ,USER_PROP_ALIAS ,USEROBJ_FLAGS, NULL,NULL}, - { "name" ,USER_PROP_NAME ,USEROBJ_FLAGS, NULL,NULL}, - { "handle" ,USER_PROP_HANDLE ,USEROBJ_FLAGS, NULL,NULL}, - { "note" ,USER_PROP_NOTE ,USEROBJ_FLAGS, NULL,NULL}, - { "ip_address" ,USER_PROP_NOTE ,USEROBJ_FLAGS, NULL,NULL}, - { "computer" ,USER_PROP_COMP ,USEROBJ_FLAGS, NULL,NULL}, - { "host_name" ,USER_PROP_COMP ,USEROBJ_FLAGS, NULL,NULL}, - { "comment" ,USER_PROP_COMMENT ,USEROBJ_FLAGS, NULL,NULL}, - { "netmail" ,USER_PROP_NETMAIL ,USEROBJ_FLAGS, NULL,NULL}, - { "email" ,USER_PROP_NETMAIL ,USEROBJ_FLAGS, NULL,NULL}, - { "address" ,USER_PROP_ADDRESS ,USEROBJ_FLAGS, NULL,NULL}, - { "location" ,USER_PROP_LOCATION ,USEROBJ_FLAGS, NULL,NULL}, - { "zipcode" ,USER_PROP_ZIPCODE ,USEROBJ_FLAGS, NULL,NULL}, - { "phone" ,USER_PROP_PHONE ,USEROBJ_FLAGS, NULL,NULL}, - { "birthdate" ,USER_PROP_BIRTH ,USEROBJ_FLAGS, NULL,NULL}, - { "modem" ,USER_PROP_MODEM ,USEROBJ_FLAGS, NULL,NULL}, - { "connection" ,USER_PROP_MODEM ,USEROBJ_FLAGS, NULL,NULL}, - { "screen_rows" ,USER_PROP_ROWS ,USEROBJ_FLAGS, NULL,NULL}, - { "gender" ,USER_PROP_SEX ,USEROBJ_FLAGS, NULL,NULL}, - { "cursub" ,USER_PROP_CURSUB ,USEROBJ_FLAGS, NULL,NULL}, - { "curdir" ,USER_PROP_CURDIR ,USEROBJ_FLAGS, NULL,NULL}, - { "editor" ,USER_PROP_XEDIT ,USEROBJ_FLAGS, NULL,NULL}, - { "command_shell" ,USER_PROP_SHELL ,USEROBJ_FLAGS, NULL,NULL}, - { "settings" ,USER_PROP_MISC ,USEROBJ_FLAGS, NULL,NULL}, - { "qwk_settings" ,USER_PROP_QWK ,USEROBJ_FLAGS, NULL,NULL}, - { "chat_settings" ,USER_PROP_CHAT ,USEROBJ_FLAGS, NULL,NULL}, - { "temp_file_ext" ,USER_PROP_TMPEXT ,USEROBJ_FLAGS, NULL,NULL}, - { "newscan_date" ,USER_PROP_NS_TIME ,USEROBJ_FLAGS, NULL,NULL}, - { "download_protocol" ,USER_PROP_PROT ,USEROBJ_FLAGS, NULL,NULL}, - {0} -}; - -/* user.stats: These should be READ ONLY by nature */ -static struct JSPropertySpec js_user_stats_properties[] = { -/* name ,tinyid ,flags, getter, setter */ - - { "laston_date" ,USER_PROP_LASTON ,USEROBJ_FLAGS, NULL,NULL}, - { "firston_date" ,USER_PROP_FIRSTON ,USEROBJ_FLAGS, NULL,NULL}, - { "total_logons" ,USER_PROP_LOGONS ,USEROBJ_FLAGS, NULL,NULL}, - { "logons_today" ,USER_PROP_LTODAY ,USEROBJ_FLAGS, NULL,NULL}, - { "total_timeon" ,USER_PROP_TIMEON ,USEROBJ_FLAGS, NULL,NULL}, - { "timeon_today" ,USER_PROP_TTODAY ,USEROBJ_FLAGS, NULL,NULL}, - { "timeon_last_logon" ,USER_PROP_TLAST ,USEROBJ_FLAGS, NULL,NULL}, - { "total_posts" ,USER_PROP_POSTS ,USEROBJ_FLAGS, NULL,NULL}, - { "total_emails" ,USER_PROP_EMAILS ,USEROBJ_FLAGS, NULL,NULL}, - { "total_feedbacks" ,USER_PROP_FBACKS ,USEROBJ_FLAGS, NULL,NULL}, - { "email_today" ,USER_PROP_ETODAY ,USEROBJ_FLAGS, NULL,NULL}, - { "posts_today" ,USER_PROP_PTODAY ,USEROBJ_FLAGS, NULL,NULL}, - { "bytes_uploaded" ,USER_PROP_ULB ,USEROBJ_FLAGS, NULL,NULL}, - { "files_uploaded" ,USER_PROP_ULS ,USEROBJ_FLAGS, NULL,NULL}, - { "bytes_downloaded" ,USER_PROP_DLB ,USEROBJ_FLAGS, NULL,NULL}, - { "files_downloaded" ,USER_PROP_DLS ,USEROBJ_FLAGS, NULL,NULL}, - { "leech_attempts" ,USER_PROP_LEECH ,USEROBJ_FLAGS, NULL,NULL}, - {0} -}; - -/* user.security */ -static struct JSPropertySpec js_user_security_properties[] = { -/* name ,tinyid ,flags, getter, setter */ - - { "password" ,USER_PROP_PASS ,USEROBJ_FLAGS, NULL,NULL}, - { "password_date" ,USER_PROP_PWMOD ,USEROBJ_FLAGS, NULL,NULL}, - { "level" ,USER_PROP_LEVEL ,USEROBJ_FLAGS, NULL,NULL}, - { "flags1" ,USER_PROP_FLAGS1 ,USEROBJ_FLAGS, NULL,NULL}, - { "flags2" ,USER_PROP_FLAGS2 ,USEROBJ_FLAGS, NULL,NULL}, - { "flags3" ,USER_PROP_FLAGS3 ,USEROBJ_FLAGS, NULL,NULL}, - { "flags4" ,USER_PROP_FLAGS4 ,USEROBJ_FLAGS, NULL,NULL}, - { "exemptions" ,USER_PROP_EXEMPT ,USEROBJ_FLAGS, NULL,NULL}, - { "restrictions" ,USER_PROP_REST ,USEROBJ_FLAGS, NULL,NULL}, - { "credits" ,USER_PROP_CDT ,USEROBJ_FLAGS, NULL,NULL}, - { "free_credits" ,USER_PROP_FREECDT ,USEROBJ_FLAGS, NULL,NULL}, - { "minutes" ,USER_PROP_MIN ,USEROBJ_FLAGS, NULL,NULL}, - { "extra_time" ,USER_PROP_TEXTRA ,USEROBJ_FLAGS, NULL,NULL}, - { "expiration_date" ,USER_PROP_EXPIRE ,USEROBJ_FLAGS, NULL,NULL}, - {0} -}; - -static JSClass js_user_class = { - "User" /* name */ - ,JSCLASS_HAS_PRIVATE /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,js_user_get /* getProperty */ - ,js_user_set /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - -static JSClass js_user_stats_class = { - "UserStats" /* name */ - ,JSCLASS_HAS_PRIVATE /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,js_user_get /* getProperty */ - ,js_user_set /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - - -static JSClass js_user_security_class = { - "UserSecurity" /* name */ - ,JSCLASS_HAS_PRIVATE /* flags */ - ,JS_PropertyStub /* addProperty */ - ,JS_PropertyStub /* delProperty */ - ,js_user_get /* getProperty */ - ,js_user_set /* setProperty */ - ,JS_EnumerateStub /* enumerate */ - ,JS_ResolveStub /* resolve */ - ,JS_ConvertStub /* convert */ - ,JS_FinalizeStub /* finalize */ -}; - -JSObject* DLLCALL js_CreateUserObject(scfg_t* cfg, JSContext* cx, JSObject* parent, char* name, user_t* user) -{ - JSObject* userobj; - JSObject* statsobj; - JSObject* securityobj; - - userobj = JS_DefineObject(cx, parent, name, &js_user_class, NULL, 0); - - if(userobj==NULL) - return(NULL); - - JS_SetPrivate(cx, userobj, user); /* Store a pointer to user_t */ - - JS_DefineProperties(cx, userobj, js_user_properties); - - /* user.stats */ - statsobj = JS_DefineObject(cx, userobj, "stats" - ,&js_user_stats_class, NULL, 0); - - if(statsobj==NULL) - return(NULL); - - JS_SetPrivate(cx, statsobj, user); /* Store a pointer to user_t */ - - JS_DefineProperties(cx, statsobj, js_user_stats_properties); - - /* user.security */ - securityobj = JS_DefineObject(cx, userobj, "security" - ,&js_user_security_class, NULL, 0); - - if(securityobj==NULL) - return(NULL); - - JS_SetPrivate(cx, securityobj, user); /* Store a pointer to user_t */ - - JS_DefineProperties(cx, securityobj, js_user_security_properties); - - return(userobj); -} - -#endif /* JAVSCRIPT */ \ No newline at end of file