Newer
Older
/* Synchronet JavaScript "system" Object */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
* *
* Copyright 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 *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
#include "sbbs.h"
#include "js_request.h"
#include "ver.h"
typedef struct {
scfg_t* cfg;
int nodefile;
int nodegets;
} js_system_private_t;
extern JSClass js_system_class;
/* System Object Properties */
SYS_PROP_NAME
, SYS_PROP_OP
, SYS_PROP_OP_AVAIL
, SYS_PROP_GURU
, SYS_PROP_ID
, SYS_PROP_MISC
, SYS_PROP_LOGIN
, SYS_PROP_INETADDR
, SYS_PROP_LOCATION
, SYS_PROP_TIMEZONE
, SYS_PROP_TZ_OFFSET
, SYS_PROP_DATE_FMT
, SYS_PROP_DATE_SEP
, SYS_PROP_DATE_VERBAL
, SYS_PROP_BIRTHDATE_FMT
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
, SYS_PROP_PWDAYS
, SYS_PROP_MINPWLEN
, SYS_PROP_MAXPWLEN
, SYS_PROP_DELDAYS
, SYS_PROP_AUTODEL
, SYS_PROP_LASTUSER
, SYS_PROP_LASTUSERON
, SYS_PROP_FREEDISKSPACE
, SYS_PROP_FREEDISKSPACEK
, SYS_PROP_NODES
, SYS_PROP_LASTNODE
, SYS_PROP_MQTT_ENABLED
, SYS_PROP_NEW_PASS
, SYS_PROP_NEW_MAGIC
, SYS_PROP_NEW_LEVEL
, SYS_PROP_NEW_FLAGS1
, SYS_PROP_NEW_FLAGS2
, SYS_PROP_NEW_FLAGS3
, SYS_PROP_NEW_FLAGS4
, SYS_PROP_NEW_REST
, SYS_PROP_NEW_EXEMPT
, SYS_PROP_NEW_CDT
, SYS_PROP_NEW_MIN
, SYS_PROP_NEW_SHELL
, SYS_PROP_NEW_XEDIT
, SYS_PROP_NEW_MISC
, SYS_PROP_NEW_PROT
, SYS_PROP_NEW_EXPIRE
, SYS_PROP_NEW_UQ
, SYS_PROP_EXPIRED_LEVEL
, SYS_PROP_EXPIRED_FLAGS1
, SYS_PROP_EXPIRED_FLAGS2
, SYS_PROP_EXPIRED_FLAGS3
, SYS_PROP_EXPIRED_FLAGS4
, SYS_PROP_EXPIRED_REST
, SYS_PROP_EXPIRED_EXEMPT
/* directories */
, SYS_PROP_NODE_DIR
, SYS_PROP_CTRL_DIR
, SYS_PROP_DATA_DIR
, SYS_PROP_TEXT_DIR
, SYS_PROP_TEMP_DIR
, SYS_PROP_EXEC_DIR
, SYS_PROP_MODS_DIR
, SYS_PROP_LOGS_DIR
/* clock/timer access */
, SYS_PROP_CLOCK
, SYS_PROP_CLOCK_PER_SEC
, SYS_PROP_TIMER
/* filenames */
, SYS_PROP_DEVNULL
, SYS_PROP_TEMP_PATH
, SYS_PROP_CMD_SHELL
, SYS_PROP_LOCAL_HOSTNAME
, SYS_PROP_NAME_SERVERS
static JSBool js_system_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
jsval idval;
char str[128];
char* p = NULL;
jsint tiny;
JSString* js_str;
uint64_t space;
jsrefcount rc;
JSObject * robj;
jsval jval;
str_list_t list;
int i;
js_system_private_t* sys;
if ((sys = (js_system_private_t*)js_GetClassPrivate(cx, obj, &js_system_class)) == NULL)
return JS_FALSE;
scfg_t* cfg = sys->cfg;
JS_IdToValue(cx, id, &idval);
tiny = JSVAL_TO_INT(idval);
#ifndef JSDOOR
case SYS_PROP_OP_AVAIL:
*vp = BOOLEAN_TO_JSVAL(sysop_available(cfg));
case SYS_PROP_GURU:
p = cfg->sys_guru;
break;
*vp = UINT_TO_JSVAL(cfg->sys_misc);
case SYS_PROP_LOGIN:
*vp = UINT_TO_JSVAL(cfg->sys_login);
break;
p = cfg->sys_inetaddr;
break;
case SYS_PROP_LOCATION:
p = cfg->sys_location;
break;
case SYS_PROP_TIMEZONE:
*vp = INT_TO_JSVAL(sys_timezone(cfg));
case SYS_PROP_TZ_OFFSET:
*vp = INT_TO_JSVAL(smb_tzutc(sys_timezone(cfg)));
break;
case SYS_PROP_DATE_FMT:
*vp = INT_TO_JSVAL(cfg->sys_date_fmt);
break;
case SYS_PROP_DATE_SEP:
snprintf(str, sizeof str, "%c", cfg->sys_date_sep);
p = str;
break;
case SYS_PROP_DATE_VERBAL:
*vp = BOOLEAN_TO_JSVAL(cfg->sys_date_verbal);
break;
case SYS_PROP_BIRTHDATE_FMT:
birthdate_format(cfg, str, sizeof str);
p = str;
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_MQTT_ENABLED:
*vp = BOOLEAN_TO_JSVAL(cfg->mqtt.enabled);
Loading
Loading full blame...