diff --git a/docs/jsobjs.html b/docs/jsobjs.html index 7ba1621122267def4e295c5401c31a00828726f5..c3c0bfcc702191e51fd9bbdc36e72f9c6e461fdf 100644 --- a/docs/jsobjs.html +++ b/docs/jsobjs.html @@ -11,359 +11,507 @@ <body> <font face=arial,helvetica> <h1>Synchronet JavaScript Object Model Reference</h1> -Generated for <b>Synchronet v3.18c</b>, compiled Sep 24 2020 22:42 +Generated for <b>Synchronet v3.19b</b>, compiled Jan 1 2022 22:31 <br><font size=-1> Property and Method version numbers (when available) indicate the Synchronet version when the item was added or modified. </font> <ol type=square> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#global"><b>global</b></a> object +[+]  <a href="#global_object"><b>global</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#global_methods>methods</a> +<a href=#global_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#global_properties>properties</a> +<a href=#global_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#js"><b>js</b></a> object +[+]  <a href="#js_object"><b>js</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#js_methods>methods</a> +<a href=#js_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#js_properties>properties</a> +<a href=#js_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#system"><b>system</b></a> object +[+]  <a href="#system_object"><b>system</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#system_methods>methods</a> +<a href=#system_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#system_properties>properties</a> +<a href=#system_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#system.stats"><b>system.stats</b></a> object +<a href="#system.stats_object"><b>system.stats</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#system.stats_properties>properties</a> +<a href=#system.stats_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#system.node_list"><b>system.node_list</b></a> array +<a href="#system.node_list_array"><b>system.node_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#system.node_list_properties>properties</a> +<a href=#system.node_list_object_properties>properties</a> </ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#server"><b>server</b></a> object +[+]  <a href="#server_object"><b>server</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#server_properties>properties</a> +<a href=#server_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#client"><b>client</b></a> object +[+]  <a href="#client_object"><b>client</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#client_properties>properties</a> +<a href=#client_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#user"><b>user</b></a> object +[+]  <a href="#user_object"><b>user</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#user_methods>methods</a> +<a href=#user_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#user_properties>properties</a> +<a href=#user_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#user.stats"><b>user.stats</b></a> object +<a href="#user.stats_object"><b>user.stats</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#user.stats_properties>properties</a> +<a href=#user.stats_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#user.security"><b>user.security</b></a> object +<a href="#user.security_object"><b>user.security</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#user.security_properties>properties</a> +<a href=#user.security_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#user.limits"><b>user.limits</b></a> object +<a href="#user.limits_object"><b>user.limits</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#user.limits_properties>properties</a> +<a href=#user.limits_object_properties>properties</a> </ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#bbs"><b>bbs</b></a> object +[+]  <a href="#bbs_object"><b>bbs</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#bbs_methods>methods</a> +<a href=#bbs_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#bbs.mods"><b>bbs.mods</b></a> object +<a href="#bbs.mods_object"><b>bbs.mods</b></a> object <ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#bbs_properties>properties</a> +<a href=#bbs_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#console"><b>console</b></a> object +[+]  <a href="#console_object"><b>console</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#console_methods>methods</a> +<a href=#console_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#console_properties>properties</a> +<a href=#console_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#msg_area"><b>msg_area</b></a> object +[+]  <a href="#msg_area_object"><b>msg_area</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#msg_area_properties>properties</a> +<a href=#msg_area_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#msg_area.grp"><b>msg_area.grp</b></a> object +<a href="#msg_area.grp_object"><b>msg_area.grp</b></a> object <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#msg_area.sub"><b>msg_area.sub</b></a> object +<a href="#msg_area.sub_object"><b>msg_area.sub</b></a> object <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#msg_area.grp_list"><b>msg_area.grp_list</b></a> array +<a href="#msg_area.grp_list_array"><b>msg_area.grp_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#msg_area.grp_list_properties>properties</a> +<a href=#msg_area.grp_list_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#msg_area.grp_list.sub_list"><b>msg_area.grp_list.sub_list</b></a> array +<a href="#msg_area.grp_list.sub_list_array"><b>msg_area.grp_list.sub_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#msg_area.grp_list.sub_list_properties>properties</a> +<a href=#msg_area.grp_list.sub_list_object_properties>properties</a> </ul> </ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#file_area"><b>file_area</b></a> object +[+]  <a href="#file_area_object"><b>file_area</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#file_area_properties>properties</a> +<a href=#file_area_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#file_area.lib"><b>file_area.lib</b></a> object +<a href="#file_area.lib_object"><b>file_area.lib</b></a> object <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#file_area.dir"><b>file_area.dir</b></a> object +<a href="#file_area.dir_object"><b>file_area.dir</b></a> object <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#file_area.lib_list"><b>file_area.lib_list</b></a> array +<a href="#file_area.lib_list_array"><b>file_area.lib_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#file_area.lib_list_properties>properties</a> +<a href=#file_area.lib_list_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#file_area.lib_list.dir_list"><b>file_area.lib_list.dir_list</b></a> array +<a href="#file_area.lib_list.dir_list_array"><b>file_area.lib_list.dir_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#file_area.lib_list.dir_list_properties>properties</a> +<a href=#file_area.lib_list.dir_list_object_properties>properties</a> </ul> </ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#xtrn_area"><b>xtrn_area</b></a> object +[+]  <a href="#xtrn_area_object"><b>xtrn_area</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#xtrn_area.sec"><b>xtrn_area.sec</b></a> object +<a href="#xtrn_area.sec_object"><b>xtrn_area.sec</b></a> object <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#xtrn_area.prog"><b>xtrn_area.prog</b></a> object +<a href="#xtrn_area.prog_object"><b>xtrn_area.prog</b></a> object <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#xtrn_area.sec_list"><b>xtrn_area.sec_list</b></a> array +<a href="#xtrn_area.sec_list_array"><b>xtrn_area.sec_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#xtrn_area.sec_list_properties>properties</a> +<a href=#xtrn_area.sec_list_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#xtrn_area.sec_list.prog_list"><b>xtrn_area.sec_list.prog_list</b></a> array +<a href="#xtrn_area.sec_list.prog_list_array"><b>xtrn_area.sec_list.prog_list</b></a> array <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#xtrn_area.sec_list.prog_list_properties>properties</a> +<a href=#xtrn_area.sec_list.prog_list_object_properties>properties</a> </ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#xtrn_area.event"><b>xtrn_area.event</b></a> object +<a href="#xtrn_area.event_object"><b>xtrn_area.event</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#xtrn_area.event_properties>properties</a> +<a href=#xtrn_area.event_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#xtrn_area.editor"><b>xtrn_area.editor</b></a> object +<a href="#xtrn_area.editor_object"><b>xtrn_area.editor</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#xtrn_area.editor_properties>properties</a> +<a href=#xtrn_area.editor_object_properties>properties</a> </ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#MsgBase"><b>MsgBase</b></a> class +[+]  <a href="#MsgBase_class"><b>MsgBase</b></a> class <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#MsgBase_methods>methods</a> +<a href=#MsgBase_class_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#MsgBase_properties>properties</a> +<a href=#MsgBase_object_properties>properties</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href="#MsgBase.cfg"><b>MsgBase.cfg</b></a> object +<a href="#MsgBase.cfg_object"><b>MsgBase.cfg</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#MsgBase.cfg_properties>properties</a> +<a href=#MsgBase.cfg_object_properties>properties</a> </ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#MsgBase_class_object"><b>MsgBase</b></a> class object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#MsgBase.IndexPrototype_object"><b>MsgBase.IndexPrototype</b></a> object +<ul> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#MsgBase.HeaderPrototype_object"><b>MsgBase.HeaderPrototype</b></a> object +<ul> +</ul> +</ul> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +[+]  <a href="#FileBase_class"><b>FileBase</b></a> class +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#FileBase_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#FileBase_object_properties>properties</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#FileBase_class_object"><b>FileBase</b></a> class object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#FileBase.DETAIL_object"><b>FileBase.DETAIL</b></a> object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#FileBase.DETAIL_object_properties>properties</a> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#FileBase.SORT_object"><b>FileBase.SORT</b></a> object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#FileBase.SORT_object_properties>properties</a> +</ul> +</ul> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +[+]  <a href="#File_class"><b>File</b></a> class +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#File_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#File_object_properties>properties</a> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +[+]  <a href="#Archive_class"><b>Archive</b></a> class +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#Archive_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#Archive_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#File"><b>File</b></a> class +[+]  <a href="#Queue_class"><b>Queue</b></a> class <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#File_methods>methods</a> +<a href=#Queue_class_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#File_properties>properties</a> +<a href=#Queue_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#Queue"><b>Queue</b></a> class +[+]  <a href="#Socket_class"><b>Socket</b></a> class <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#Queue_methods>methods</a> +<a href=#Socket_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#Socket_object_properties>properties</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#Socket_class_object"><b>Socket</b></a> class object +<ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#Queue_properties>properties</a> +<a href=#Socket_object_properties>properties</a> +</ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#Socket"><b>Socket</b></a> class +[+]  <a href="#ConnectedSocket_class"><b>ConnectedSocket</b></a> class +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +[+]  <a href="#ListeningSocket_class"><b>ListeningSocket</b></a> class +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +[+]  <a href="#COM_class"><b>COM</b></a> class <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#Socket_methods>methods</a> +<a href=#COM_class_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#Socket_properties>properties</a> +<a href=#COM_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#ConnectedSocket"><b>ConnectedSocket</b></a> class +[+]  <a href="#conio_object"><b>conio</b></a> object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#conio_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#ListeningSocket"><b>ListeningSocket</b></a> class +<a href=#conio_object_properties>properties</a> +</ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#COM"><b>COM</b></a> class +[+]  <a href="#uifc_object"><b>uifc</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#COM_methods>methods</a> +<a href=#uifc_object_methods>methods</a> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#COM_properties>properties</a> +<a href=#uifc_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#CryptContext"><b>CryptContext</b></a> class +[+]  <a href="#CryptContext_class"><b>CryptContext</b></a> class +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#CryptContext_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#CryptContext_object_properties>properties</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptContext_class_object"><b>CryptContext</b></a> class object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptContext.ALGO_object"><b>CryptContext.ALGO</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#CryptContext_methods>methods</a> +<a href=#CryptContext.ALGO_object_properties>properties</a> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptContext.MODE_object"><b>CryptContext.MODE</b></a> object +<ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#CryptContext_properties>properties</a> +<a href=#CryptContext.MODE_object_properties>properties</a> </ul> +</ul> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +[+]  <a href="#CryptKeyset_class"><b>CryptKeyset</b></a> class +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#CryptKeyset_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptKeyset_class_object"><b>CryptKeyset</b></a> class object +<ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#CryptKeyset"><b>CryptKeyset</b></a> class +<a href="#CryptKeyset.KEYOPT_object"><b>CryptKeyset.KEYOPT</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#CryptKeyset_methods>methods</a> +<a href=#CryptKeyset.KEYOPT_object_properties>properties</a> +</ul> +</ul> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#conio"><b>conio</b></a> object +[+]  <a href="#CryptCert_class"><b>CryptCert</b></a> class +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#CryptCert_class_methods>methods</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href=#CryptCert_object_properties>properties</a> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptCert_class_object"><b>CryptCert</b></a> class object +<ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptCert.CURSOR_object"><b>CryptCert.CURSOR</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#conio_methods>methods</a> +<a href=#CryptCert.CURSOR_object_properties>properties</a> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptCert.TYPE_object"><b>CryptCert.TYPE</b></a> object +<ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#conio_properties>properties</a> +<a href=#CryptCert.TYPE_object_properties>properties</a> </ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -[+]  <a href="#uifc"><b>uifc</b></a> object +<a href="#CryptCert.FORMAT_object"><b>CryptCert.FORMAT</b></a> object <ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#uifc_methods>methods</a> +<a href=#CryptCert.FORMAT_object_properties>properties</a> +</ul> +<li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' + onselectstart = 'event.returnValue = false;'> +<a href="#CryptCert.ATTR_object"><b>CryptCert.ATTR</b></a> object +<ul> <li onclick = 'this.className = (this.className == "showList") ? "defaultStyles" : "showList";' onselectstart = 'event.returnValue = false;'> -<a href=#uifc_properties>properties</a> +<a href=#CryptCert.ATTR_object_properties>properties</a> +</ul> +</ul> </ul> </ol> -<h2><a name=global>global object</a> +<h2><a name=global_object>global object</a> <br><font size=-1>Top-level functions and properties (common to all servers and services)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>global</tt> -<a name=global_methods> methods</a> +<a name=global_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -400,9 +548,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>alert</b><td>void<td><tt>alert(value) <td>3.10 <td>print an alert message (ala client-side JS) -<tr valign=top><td><b>prompt</b><td>string<td><tt>prompt([value]) +<tr valign=top><td><b>prompt</b><td>string<td><tt>prompt([text] [,value] [,mode=K_EDIT]) <td>3.10 -<td>displays a prompt (<i>value</i>) and returns a string of user input (ala clent-side JS) +<td>displays a prompt (<i>text</i>) and returns a string of user input (ala client-side JS) <tr valign=top><td><b>confirm</b><td>boolean<td><tt>confirm(value) <td>3.10 <td>displays a Yes/No prompt and returns <i>true</i> or <i>false</i> based on user's confirmation (ala client-side JS, <i>true</i> = yes) @@ -448,6 +596,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>strip_ctrl</b><td>string<td><tt>strip_ctrl(text) <td>3.10 <td>strip control characters from string, returns modified string +<tr valign=top><td><b>strip_ansi</b><td>string<td><tt>strip_ansi(text) +<td>3.18c +<td>strip all ANSI terminal control sequences from string, returns modified string <tr valign=top><td><b>strip_exascii</b><td>string<td><tt>strip_exascii(text) <td>3.10 <td>strip all extended-ASCII characters from string, returns modified string @@ -549,7 +700,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>returns the total disk size of the specified <i>directory</i> using the specified <i>unit_size</i> in bytes (default: 1), specify a <i>unit_size</i> of <tt>1024</tt> to return the total disk size in <i>kilobytes</i>. <tr valign=top><td><b>socket_select</b><td>array<td><tt>socket_select([array of socket objects or descriptors] [,timeout=<tt>0</tt>] [,write=<tt>false</tt>]) <td>3.11 -<td>checks an array of socket objects or descriptors for read or write ability (default is <i>read</i>), default timeout value is 0.0 seconds (immediate timeout), returns an array of 0-based index values into the socket array, representing the sockets that were ready for reading or writing, or <i>null</i> on error. If multiple arrays of sockets are passed, they are presumet to be in the order of read, write, and except. In this case, the write parameter is ignored and an object is returned instead with up to three properties "read", "write", and "except", corresponding to the passed arrays. Empty passed arrays will not have a corresponding property in the returned object. +<td>checks an array of socket objects or descriptors for read or write ability (default is <i>read</i>), default timeout value is 0.0 seconds (immediate timeout), returns an array of 0-based index values into the socket array, representing the sockets that were ready for reading or writing, or <i>null</i> on error. If multiple arrays of sockets are passed, they are presumed to be in the order of read, write, and except. In this case, the write parameter is ignored and an object is returned instead with up to three properties "read", "write", and "except", corresponding to the passed arrays. Empty passed arrays will not have a corresponding property in the returned object. +<tr valign=top><td><b>socket_strerror</b><td>string<td><tt>socket_strerror(error) +<td>3.18c +<td>get the description(string representation) of a numeric socket error value (e.g. <tt>socket_errno</tt>) +<tr valign=top><td><b>strerror</b><td>string<td><tt>strerror(error) +<td>3.18c +<td>get the description(string representation) of a numeric system error value (e.g. <tt>errno</tt>) <tr valign=top><td><b>mkdir</b><td>boolean<td><tt>mkdir(path/directory) <td>3.10 <td>make a directory @@ -598,6 +755,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>md5_calc</b><td>string<td><tt>md5_calc(text [,hex=<tt>false</tt>]) <td>3.11 <td>calculate and return 128-bit MD5 digest of text string, result encoded in base64 (default) or hexadecimal +<tr valign=top><td><b>sha1_calc</b><td>string<td><tt>sha1_calc(text [,hex=false]) +<td>3.19 +<td>calculate and return 160-bit SHA-1 digest of text string, result encoded in base64 (default) or hexadecimal <tr valign=top><td><b>resolve_ip</b><td>string<td><tt>resolve_ip(hostname [,array=<tt>false</tt>]) <td>3.11 <td>resolve IP address of specified hostname (AKA gethostbyname). If <i>array</i> is true (added in 3.17), will return an array of all addresses rather than just the first one (upon success). @@ -638,7 +798,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <br> <table border=1 width=100%> <caption align=left><b><tt>global</tt> -<a name=global_properties> properties</a> +<a name=global_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -656,13 +816,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr><td><b>socket_errno</b><td>number<td>3.13a<td>last socket-related error number (same as <i>errno</i> on Unix platforms)</td> <tr><td><b>socket_errno_str</b><td>string<td>3.18a<td>description of last socket-related error (same as <i>errno_str</i> on Unix platforms)</td> </table> -<h2><a name=js>js object</a> +<h2><a name=js_object>js object</a> <br><font size=-1>JavaScript engine internal control object</font> <font size=-1> - introduced in v3.11</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>js</tt> -<a name=js_methods> methods</a> +<a name=js_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -699,11 +859,35 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>exec</b><td>number<td><tt>js.exec(filename [, startup_dir], <i>object</i> scope [,...]) <td>3.17c <td>execute a script within the specified scope. The main difference between this method and <tt>load()</tt> is that scripts called this way can call <tt>exit()</tt> without terminating the caller. If it does, any <tt>on_exit()</tt> handlers will be evaluated in scripts scope when the script exists. <br>NOTE: to get a child of the current scope, you need to create an object in the current scope. An anonymous object can be created using '<tt>new function(){}</tt>'. <br>NOTE: Use <tt>js.exec.apply()</tt> if you need to pass a variable number of arguments to the executed script. +<tr valign=top><td><b>setTimeout</b><td>number<td><tt>js.setTimeout(callback, time[, thisObj]) +<td>3.19 +<td>install a timeout. callback() will be called time ms after the function is called. returns an id which can be passed to clearTimeout() +<tr valign=top><td><b>setInterval</b><td>object<td><tt>js.setInterval(callback, period[, thisObj]) +<td>3.19 +<td>install a timeout. callback() will be called every period ms after setInterval() is called.returns and id which can be passed to clearIntervat() +<tr valign=top><td><b>clearTimeout</b><td>void<td><tt>js.clearTimeout(id) +<td>3.19 +<td>remove a timeout +<tr valign=top><td><b>clearInterval</b><td>void<td><tt>js.clearInterval(id) +<td>3.19 +<td>remove an interval +<tr valign=top><td><b>addEventListener</b><td>number<td><tt>js.addEventListener(eventName, callback) +<td>3.19 +<td>Add a listener that is ran after js.dispatchEvent(eventName) is called. Returns an id to be passed to js.removeEventListener +<tr valign=top><td><b>removeEventListener</b><td>void<td><tt>js.removeEventListener(id) +<td>3.19 +<td>Remove listeners added with js.addEventListener(). id can be a string or an id returned by addEventListener. This does not remove already triggered callbacks from the runqueue. +<tr valign=top><td><b>dispatchEvent</b><td>void<td><tt>js.dispatchEvent(eventName [, thisObj]) +<td>3.19 +<td>Add all listeners of eventName to the end of the runqueue. If obj is passed, specifies this in the callback (the js object is used otherwise). +<tr valign=top><td><b>setImmediate</b><td>void<td><tt>js.setImmediate(callback[, thisObj]) +<td>3.19 +<td>adds the callback to the end of the run queue, where it will be called after all pending events are processed </table> <br> <table border=1 width=100%> <caption align=left><b><tt>js</tt> -<a name=js_properties> properties</a> +<a name=js_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -741,15 +925,21 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>global</b><td>object <td>3.14 <td>global (top level) object - <small>READ ONLY</small> +<tr valign=top><td><b>options</b><td>number +<td>3.18c +<td>option flags - <small>READ ONLY</small> +<tr valign=top><td><b>do_callbacks</b><td>boolean +<td>3.19 +<td>do callbacks after script finishes running <tr valign=top><td><b>exec_path</b><td>string <td>N/A <td>full path and filename of JS file executed <tr valign=top><td><b>exec_file</b><td>string <td>N/A -<td>JS filename executed (with no path) +<td>directory of executed JS file <tr valign=top><td><b>exec_dir</b><td>string <td>N/A -<td>directory of executed JS file +<td>JS filename executed (with no path) <tr valign=top><td><b>startup_dir</b><td>string <td>N/A <td>Either the configured startup directory in SCFG (for externals) or the cwd when jsexec is started @@ -760,13 +950,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>N/A <td>load() search path array.<br>For relative load paths (e.g. not beginning with '/' or '\'), the path is assumed to be a sub-directory of the (configurable) mods or exec directories and is searched accordingly. So, by default, load("somefile.js") will search in this order:<br>mods/load/somefile.js<br>exec/load/somefile.js<br>mods/somefile.js<br>exec/somefile.js<br> </table> -<h2><a name=system>system object</a> +<h2><a name=system_object>system object</a> <br><font size=-1>Global system-related properties and methods</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>system</tt> -<a name=system_methods> methods</a> +<a name=system_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -794,9 +984,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>trashcan</b><td>boolean<td><tt>system.trashcan(basename, find_string) <td>3.10 <td>search <tt>text/<i>basename</i>.can</tt> for pseudo-regexp -<tr valign=top><td><b>findstr</b><td>boolean<td><tt>system.findstr(path/filename, find_string) +<tr valign=top><td><b>findstr</b><td>boolean<td><tt>system.findstr(path/filename or array of strings, find_string) <td>3.10 -<td>search any file for pseudo-regexp +<td>search any trashcan/filter file or array of pattern strings (in <tt>*.can</tt> format) for <i>find_string</i> <tr valign=top><td><b>zonestr</b><td>string<td><tt>system.zonestr([timezone=<i>local</i>]) <td>3.10 <td>convert time zone integer to string, defaults to system timezone if <i>timezone</i> not specified @@ -860,11 +1050,14 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>terminate_pid</b><td>boolean<td><tt>system.terminate_pid(process-ID) <td>3.15 <td>terminates executing process on the system with the specified process ID, returns <i>true</i> on success +<tr valign=top><td><b>text</b><td>string<td><tt>system.text(number) +<td>3.18c +<td>returns specified text string from text.dat (like <tt>bbs.text()</tt>) or returns <i>null</i> upon error </table> <br> <table border=1 width=100%> <caption align=left><b><tt>system</tt> -<a name=system_properties> properties</a> +<a name=system_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1039,7 +1232,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>platform-specific command processor/shell <tr valign=top><td><b>clock_ticks</b><td>number <td>3.11 -<td>amount of elapsed processor time in clock 'ticks' +<td>amount of elapsed time in clock 'ticks' <tr valign=top><td><b>clock_ticks_per_second</b><td>number <td>3.11 <td>number of clock ticks per second @@ -1049,6 +1242,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>local_host_name</b><td>string <td>3.11 <td>private host name that uniquely identifies this system on the local network +<tr valign=top><td><b>name_servers</b><td>object +<td>3.18c +<td>array of nameservers in use by the system <tr valign=top><td><b>host_name</b><td>string <td>N/A <td>public host name that uniquely identifies this system on the Internet (usually the same as <i>system.inet_addr</i>) @@ -1082,6 +1278,12 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>version_hex</b><td>number <td>N/A <td>Synchronet version number in hexadecimal (e.g. 0x31301 for v3.13b) +<tr valign=top><td><b>git_branch</b><td>string +<td>N/A +<td>Synchronet Git repository branch name +<tr valign=top><td><b>git_hash</b><td>string +<td>N/A +<td>Synchronet Git repository commit hash <tr valign=top><td><b>platform</b><td>string <td>N/A <td>platform description (e.g. 'Win32', 'Linux', 'FreeBSD') @@ -1107,13 +1309,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>N/A <td>array of FidoNet Technology Network (FTN) addresses associated with this system </table> -<h2><a name=system.stats>system.stats object</a> +<h2><a name=system.stats_object>system.stats object</a> <br><font size=-1>System statistics</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>system.stats</tt> -<a name=system.stats_properties> properties</a> +<a name=system.stats_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1176,13 +1378,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.10 <td>new users today </table> -<h2><a name=system.node_list>system.node_list array</a> +<h2><a name=system.node_list_array>system.node_list array</a> <br><font size=-1>BBS node listing</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>system.node_list</tt> -<a name=system.node_list_properties> properties</a> +<a name=system.node_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1221,13 +1423,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.15 <td>node directory </table> -<h2><a name=server>server object</a> +<h2><a name=server_object>server object</a> <br><font size=-1>Server-specifc properties</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>server</tt> -<a name=server_properties> properties</a> +<a name=server_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1257,13 +1459,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>N/A <td>Array of IP addresses of bound network interface (<tt>0.0.0.0</tt> = <i>ANY</i>) </table> -<h2><a name=client>client object</a> +<h2><a name=client_object>client object</a> <br><font size=-1>Represents a TCP/IP client session</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>client</tt> -<a name=client_properties> properties</a> +<a name=client_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1299,14 +1501,14 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>N/A <td>instance of <a href=#Socket>Socket class</a> representing client's TCP/IP connection </table> -<h2><a name=user>user object</a> +<h2><a name=user_object>user object</a> <br><font size=-1>Instance of <i>User</i> class, representing current user online</font> <font size=-1> - introduced in v3.10</font> </h2> <p>To create a new user object: <tt>var u = new User;</tt> or: <tt>var u = new User(<i>number</i>);</tt></p> <table border=1 width=100%> <caption align=left><b><tt>user</tt> -<a name=user_methods> methods</a> +<a name=user_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1342,12 +1544,12 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>Handle the full or partial successful download of a file.<br>Adjust user's files/bytes-downloaded statistics and credits, file's stats, system's stats, and uploader's stats and credits. <tr valign=top><td><b>get_time_left</b><td>number<td><tt>user.get_time_left(start_time) <td>3.14b -<td>Returns the user's available remaining time online, in seconds,<br>based on the passed <i>start_time</i> value (in time_t format)<br>Note: this method does not account for pending forced timed eventsNote: for the pre-defined user object on the BBS, you almost certainly want bbs.get_time_left() instead. +<td>Returns the user's available remaining time online, in seconds,<br>based on the passed <i>start_time</i> value (in time_t format)<br>Note: this method does not account for pending forced timed events<br>Note: for the pre-defined user object on the BBS, you almost certainly want bbs.get_time_left() instead. </table> <br> <table border=1 width=100%> <caption align=left><b><tt>user</tt> -<a name=user_properties> properties</a> +<a name=user_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1405,7 +1607,16 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>phone number <tr valign=top><td><b>birthdate</b><td>string <td>3.10 -<td>birth date in either MM/DD/YY or DD/MM/YY format depending on system configuration +<td>birth date in 'YYYYMMDD' format or legacy format: 'MM/DD/YY' or 'DD/MM/YY', depending on system configuration +<tr valign=top><td><b>birthyear</b><td>number +<td>3.18c +<td>birth year +<tr valign=top><td><b>birthmonth</b><td>number +<td>3.18c +<td>birth month (1-12) +<tr valign=top><td><b>birthday</b><td>number +<td>3.18c +<td>birth day of month (1-31) <tr valign=top><td><b>age</b><td>number <td>3.10 <td>calculated age in years - <small>READ ONLY</small> @@ -1417,10 +1628,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>AKA connection <tr valign=top><td><b>screen_rows</b><td>number <td>3.10 -<td>terminal rows (lines) +<td>terminal rows (0 = auto-detect) +<tr valign=top><td><b>screen_columns</b><td>number +<td>3.18c +<td>terminal columns (0 = auto-detect) <tr valign=top><td><b>gender</b><td>string <td>3.10 -<td>gender type (e.g. M or F) +<td>gender type (e.g. M or F or any single-character) <tr valign=top><td><b>cursub</b><td>string <td>3.10 <td>current/last message sub-board (internal code) @@ -1464,13 +1678,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.15 <td>user has a System Operator's security level </table> -<h2><a name=user.stats>user.stats object</a> +<h2><a name=user.stats_object>user.stats object</a> <br><font size=-1>User statistics (all <small>READ ONLY</small>)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>user.stats</tt> -<a name=user.stats_properties> properties</a> +<a name=user.stats_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1498,10 +1712,10 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>total time used (in minutes) <tr valign=top><td><b>timeon_today</b><td>number <td>3.10 -<td>time used today +<td>time used today (in minutes) <tr valign=top><td><b>timeon_last_logon</b><td>number <td>3.10 -<td>time used last session +<td>time used last session (in minutes) <tr valign=top><td><b>total_posts</b><td>number <td>3.10 <td>total messages posted @@ -1534,18 +1748,27 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>suspected leech downloads <tr valign=top><td><b>mail_waiting</b><td>number <td>3.12 -<td>number of e-mail messages currently waiting +<td>total number of e-mail messages currently waiting in inbox +<tr valign=top><td><b>read_mail_waiting</b><td>number +<td>3.18c +<td>number of read e-mail messages currently waiting in inbox +<tr valign=top><td><b>unread_mail_waiting</b><td>number +<td>3.18c +<td>number of unread e-mail messages currently waiting in inbox +<tr valign=top><td><b>spam_waiting</b><td>number +<td>3.18c +<td>number of SPAM e-mail messages currently waiting in inbox <tr valign=top><td><b>mail_pending</b><td>number <td>3.12 <td>number of e-mail messages sent, currently pending deletion </table> -<h2><a name=user.security>user.security object</a> +<h2><a name=user.security_object>user.security object</a> <br><font size=-1>User security settings</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>user.security</tt> -<a name=user.security_properties> properties</a> +<a name=user.security_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1599,13 +1822,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.10 <td>expiration date/time (time_t format) </table> -<h2><a name=user.limits>user.limits object</a> +<h2><a name=user.limits_object>user.limits object</a> <br><font size=-1>User limitations based on security level (all <small>READ ONLY</small>)</font> <font size=-1> - introduced in v3.11</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>user.limits</tt> -<a name=user.limits_properties> properties</a> +<a name=user.limits_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1638,13 +1861,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.11 <td>free credits given per day </table> -<h2><a name=bbs>bbs object</a> +<h2><a name=bbs_object>bbs object</a> <br><font size=-1>Controls the Telnet/SSH/RLogin BBS experience</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>bbs</tt> -<a name=bbs_methods> methods</a> +<a name=bbs_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -1720,6 +1943,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>batch_add_list</b><td>void<td><tt>bbs.batch_add_list(list_filename) <td>3.10 <td>add file list to batch download queue +<tr valign=top><td><b>view_file</b><td>boolean<td><tt>bbs.view_file(filename) +<td>3.19 +<td>list contents of specified filename (complete path) <tr valign=top><td><b>send_file</b><td>boolean<td><tt>bbs.send_file(filename [,protocol] [,description] [,autohang=true]) <td>3.14 <td>send specified filename (complete path) to user via user-prompted (or optionally specified) protocol.<br>The optional <i>description</i> string is used for logging purposes.<br>When <i>autohang=true</i>, disconnect after transfer based on user's default setting. @@ -1786,9 +2012,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>bulk_upload</b><td>boolean<td><tt>bbs.bulk_upload([directory=<i>current</i>]) <td>3.10 <td>add files (already in local storage path) to file directory specified by number or internal code -<tr valign=top><td><b>resort_dir</b><td>boolean<td><tt>bbs.resort_dir([directory=<i>current</i>]) -<td>3.10 -<td>re-sort the file directory specified by number or internal code) +<tr valign=top><td><b>export_filelist</b><td>number<td><tt>bbs.export_filelist(filename [,mode=<tt>FL_NONE</tt>]) +<td>3.19 +<td>export list of files to a text file, optionally specifying a file list mode (e.g. <tt>FL_ULTIME</tt>), returning the number of files listed <tr valign=top><td><b>list_files</b><td>number<td><tt>bbs.list_files([directory=<i>current</i>] [,filespec=<tt>"*.*"</tt> or search_string] [,mode=<tt>FL_NONE</tt>]) <td>3.10 <td>list files in the specified file directory, optionally specifying a file specification (wildcards) or a description search string, and <i>mode</i> (bitfield) @@ -1798,6 +2024,12 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>post_msg</b><td>boolean<td><tt>bbs.post_msg([sub-board=<i>current</i>] [,mode=<tt>WM_NONE</tt>] [,object reply_header]) <td>3.13 <td>post a message in the specified message sub-board (number or internal code) with optional <i>mode</i> (bitfield)<br>If <i>reply_header</i> is specified (a header object returned from <i>MsgBase.get_msg_header()</i>), that header will be used for the in-reply-to header fields. +<tr valign=top><td><b>forward_msg</b><td>boolean<td><tt>bbs.forward_msg(object header, string to [,string subject] [,string comment]) +<td>3.18c +<td>Forward a message +<tr valign=top><td><b>edit_msg</b><td>boolean<td><tt>bbs.edit_msg(object header) +<td>3.18c +<td>Edit a message <tr valign=top><td><b>show_msg</b><td>boolean<td><tt>bbs.show_msg(object header [,mode=<tt>P_NONE</tt>] ) <td>3.17c <td>show a message's header and body (text) with optional print <i>mode</i> (bitfield)<br><i>header</i> must be a header object returned from <i>MsgBase.get_msg_header()</i>) @@ -1858,12 +2090,12 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>user_event</b><td>boolean<td><tt>bbs.user_event(event_type) <td>3.10 <td>execute user event by event type (see <tt>EVENT_*</tt> in <tt>sbbsdefs.js</tt> for valid values) -<tr valign=top><td><b>telnet_gate</b><td>void<td><tt>bbs.telnet_gate(address [,mode=<tt>TG_NONE</tt>]) +<tr valign=top><td><b>telnet_gate</b><td>void<td><tt>bbs.telnet_gate(address [,mode=<tt>TG_NONE</tt>] [,timeout=<tt>10</tt>]) <td>3.10 -<td>external Telnet gateway (see <tt>TG_*</tt> in <tt>sbbsdefs.js</tt> for valid <i>mode</i> flags.) -<tr valign=top><td><b>rlogin_gate</b><td>void<td><tt>bbs.rlogin_gate(address [,client-user-name=<tt>user.alias</tt>, server-user-name=<tt>user.name</tt>, terminal=<tt>console.terminal</tt>] [,mode=<tt>TG_NONE</tt>]) +<td>external Telnet gateway (see <tt>TG_*</tt> in <tt>sbbsdefs.js</tt> for valid <i>mode</i> flags). +<tr valign=top><td><b>rlogin_gate</b><td>void<td><tt>bbs.rlogin_gate(address [,client-user-name=<tt>user.alias</tt>, server-user-name=<tt>user.name</tt>, terminal=<tt>console.terminal</tt>] [,mode=<tt>TG_NONE</tt>] [,timeout=<tt>10</tt>]) <td>3.16 -<td>external RLogin gateway (see <tt>TG_*</tt> in <tt>sbbsdefs.js</tt> for valid <i>mode</i> flags.) +<td>external RLogin gateway (see <tt>TG_*</tt> in <tt>sbbsdefs.js</tt> for valid <i>mode</i> flags). <tr valign=top><td><b>check_syspass</b><td>boolean<td><tt>bbs.check_syspass([sys_pw]) <td>3.10 <td>verify system password, prompting for the password if not passed as an argument @@ -1934,14 +2166,14 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.17 <td>Choose a user to interact with. </table> -<h2><a name=bbs.mods>bbs.mods object</a> +<h2><a name=bbs.mods_object>bbs.mods object</a> <br><font size=-1>Global repository for 3rd party modifications</font> <font size=-1> - introduced in v3.12</font> </h2> <br> <table border=1 width=100%> <caption align=left><b><tt>bbs</tt> -<a name=bbs_properties> properties</a> +<a name=bbs_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2087,9 +2319,6 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>client_name</b><td>string <td>3.10 <td>client name -<tr valign=top><td><b>alt_ul_dir</b><td>number -<td>3.10 -<td>current alternate upload path number <tr valign=top><td><b>errorlevel</b><td>number <td>3.12 <td>error level returned from last executed external program @@ -2150,6 +2379,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>msg_from_net</b><td>string <td>3.10 <td>message sender network address +<tr valign=top><td><b>msg_from_bbsid</b><td>string +<td>3.18c +<td>message sender BBS ID <tr valign=top><td><b>msg_from_agent</b><td>number <td>3.10 <td>message sender agent type @@ -2265,13 +2497,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.14 <td>current command shell/module <i>command string</i> value </table> -<h2><a name=console>console object</a> +<h2><a name=console_object>console object</a> <br><font size=-1>Controls the remote terminal</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>console</tt> -<a name=console_methods> methods</a> +<a name=console_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2286,7 +2518,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <font color="white">Description</font> <tr valign=top><td><b>inkey</b><td>string<td><tt>console.inkey([mode=<tt>K_NONE</tt>] [,timeout=<tt>0</tt>]) <td>3.11 -<td>get a single key with optional <i>timeout</i> in milliseconds (defaults to 0, for no wait).<br>Returns an empty string if there is no input (e.g. timeout occurs).<br>See <tt>K_*</tt> in <tt>sbbsdefs.js</tt> for <i>mode</i> flags. +<td>get a single key with optional <i>timeout</i> in milliseconds (defaults to 0, for no wait).<br>Returns an empty string (or <tt>null</tt> when the <tt>K_NUL</tt> mode flag is used) if there is no input (e.g. timeout occurs).<br>See <tt>K_*</tt> in <tt>sbbsdefs.js</tt> for <i>mode</i> flags. <tr valign=top><td><b>getkey</b><td>string<td><tt>console.getkey([mode=<tt>K_NONE</tt>]) <td>3.10 <td>get a single key, with wait.<br>See <tt>K_*</tt> in <tt>sbbsdefs.js</tt> for <i>mode</i> flags. @@ -2416,6 +2648,9 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>term_supports</b><td>boolean<td><tt>console.term_supports([terminal_flags]) <td>3.14 <td>either returns <i>bool</i>, indicating whether or not the current user/client supports all the specified <i>terminal_flags</i>, or returns the current user/client's <i>terminal_flags</i> (numeric bit-field) if no <i>terminal_flags</i> were specified +<tr valign=top><td><b>term_updated</b><td>boolean<td><tt>console.term_updated() +<td>3.18c +<td>update the node's <tt>terminal.ini</tt> file to match the current terminal settings <tr valign=top><td><b>backspace</b><td>void<td><tt>console.backspace([count=<tt>1</tt>]) <td>3.15 <td>send a destructive backspace sequence @@ -2440,11 +2675,23 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>scroll_hotspots</b><td>void<td><tt>console.scroll_hotspots([rows=1]) <td>3.18 <td>scroll all current mouse hot-spots by the specific number of rows +<tr valign=top><td><b>on</b><td>number<td><tt>console.on(type, callback) +<td>3.19 +<td>calls callback whenever the condition type specifies is possible. Currently, only 'read' is supported for type. Returns an id suitable for use with clearOn +<tr valign=top><td><b>once</b><td>number<td><tt>console.once(type, callback) +<td>3.19 +<td>calls callback the first time the condition type specifies is possible. Currently, only 'read' is supported for type. Returns an id suitable for use with clearOnce +<tr valign=top><td><b>clearOn</b><td>void<td><tt>console.clearOn(type, id) +<td>3.19 +<td>removes a callback installed by on +<tr valign=top><td><b>clearOnce</b><td>void<td><tt>console.clearOnce(type, id) +<td>3.19 +<td>removes a callback installed by once </table> <br> <table border=1 width=100%> <caption align=left><b><tt>console</tt> -<a name=console_properties> properties</a> +<a name=console_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2557,14 +2804,26 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>keyboard_buffer_space</b><td>number <td>3.18 <td>number of characters spaces available in the keyboard input buffer - <small>READ ONLY</small> +<tr valign=top><td><b>cterm_fonts_loaded</b><td>object +<td>N/A +<td>undefined +<tr valign=top><td><b>cterm_font_state</b><td>object +<td>N/A +<td>undefined +<tr valign=top><td><b>cterm_fonts_active</b><td>object +<td>N/A +<td>undefined +<tr valign=top><td><b>cterm_charheight</b><td>string +<td>N/A +<td>undefined </table> -<h2><a name=msg_area>msg_area object</a> +<h2><a name=msg_area_object>msg_area object</a> <br><font size=-1>Message Areas</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>msg_area</tt> -<a name=msg_area_properties> properties</a> +<a name=msg_area_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2580,21 +2839,21 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>inet_netmail_settings</b><td>number <td>Internet NetMail settings (bitfield) - see <tt>NMAIL_*</tt> in <tt>sbbsdefs.js</tt> for details </table> -<h2><a name=msg_area.grp>msg_area.grp object</a> +<h2><a name=msg_area.grp_object>msg_area.grp object</a> <br><font size=-1>Associative array of all groups (use name as index)</font> <font size=-1> - introduced in v3.12</font> </h2> -<h2><a name=msg_area.sub>msg_area.sub object</a> +<h2><a name=msg_area.sub_object>msg_area.sub object</a> <br><font size=-1>Associative array of all sub-boards (use internal code as index)</font> <font size=-1> - introduced in v3.11</font> </h2> -<h2><a name=msg_area.grp_list>msg_area.grp_list array</a> +<h2><a name=msg_area.grp_list_array>msg_area.grp_list array</a> <br><font size=-1>Message Groups (current user has access to)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>msg_area.grp_list</tt> -<a name=msg_area.grp_list_properties> properties</a> +<a name=msg_area.grp_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2615,14 +2874,16 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>group access requirements <tr valign=top><td><b>can_access</b><td>boolean <td>user has sufficient access to list this group's sub-boards <i>(introduced in v3.18)</i> +<tr valign=top><td><b>code_prefix</b><td>string +<td>internal code prefix (for sub-boards) <i>(introduced in v3.18c)</i> </table> -<h2><a name=msg_area.grp_list.sub_list>msg_area.grp_list.sub_list array</a> +<h2><a name=msg_area.grp_list.sub_list_array>msg_area.grp_list.sub_list array</a> <br><font size=-1>Message Sub-boards (current user has access to)</h2>(all properties are <small>READ ONLY</small> except for <i>scan_ptr</i>, <i>scan_cfg</i>, and <i>last_read</i>)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>msg_area.grp_list.sub_list</tt> -<a name=msg_area.grp_list.sub_list_properties> properties</a> +<a name=msg_area.grp_list.sub_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2648,9 +2909,11 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>description</b><td>string <td>sub-board description <tr valign=top><td><b>qwk_name</b><td>string -<td>sub-board QWK name +<td>QWK conference name +<tr valign=top><td><b>area_tag</b><td>string +<td>area tag for FidoNet-style echoes, a.k.a. EchoTag <i>(introduced in v3.19)</i> <tr valign=top><td><b>newsgroup</b><td>string -<td>newsgroup name (as configured or dymamically generated) +<td>newsgroup name (as configured or dynamically generated) <tr valign=top><td><b>ars</b><td>string <td>sub-board access requirements <tr valign=top><td><b>read_ars</b><td>string @@ -2699,14 +2962,16 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>user's message scan configuration (bitfield) - see <tt>SCAN_CFG_*</tt> in <tt>sbbsdefs.js</tt> for details <tr valign=top><td><b>last_read</b><td>undefined <td>user's last-read message number +<tr valign=top><td><b>posts</b><td>number +<td>number of messages currently posted to this sub-board <i>(introduced in v3.18c)</i> </table> -<h2><a name=file_area>file_area object</a> +<h2><a name=file_area_object>file_area object</a> <br><font size=-1>File Transfer Areas</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>file_area</tt> -<a name=file_area_properties> properties</a> +<a name=file_area_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2719,24 +2984,22 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>minimum amount of available disk space (in kilobytes) required for user uploads to be allowed <tr valign=top><td><b>settings</b><td>number <td>file area settings (bitfield) - see <tt>FM_*</tt> in <tt>sbbsdefs.js</tt> for details -<tr valign=top><td><b>alt_paths</b><td>object -<td>array of alternative file paths. NOTE: this array is zero-based, but alt path fields are one-based. </table> -<h2><a name=file_area.lib>file_area.lib object</a> +<h2><a name=file_area.lib_object>file_area.lib object</a> <br><font size=-1>Associative array of all libraries (use name as index)</font> <font size=-1> - introduced in v3.12</font> </h2> -<h2><a name=file_area.dir>file_area.dir object</a> +<h2><a name=file_area.dir_object>file_area.dir object</a> <br><font size=-1>Associative array of all directories (use internal code as index)</font> <font size=-1> - introduced in v3.11</font> </h2> -<h2><a name=file_area.lib_list>file_area.lib_list array</a> +<h2><a name=file_area.lib_list_array>file_area.lib_list array</a> <br><font size=-1>File Transfer Libraries (current user has access to)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>file_area.lib_list</tt> -<a name=file_area.lib_list_properties> properties</a> +<a name=file_area.lib_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2759,14 +3022,16 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>library link (for HTML index) <tr valign=top><td><b>can_access</b><td>boolean <td>user has sufficient access to this library's directories <i>(introduced in v3.18)</i> +<tr valign=top><td><b>code_prefix</b><td>string +<td>internal code prefix (for directories) <i>(introduced in v3.18c)</i> </table> -<h2><a name=file_area.lib_list.dir_list>file_area.lib_list.dir_list array</a> +<h2><a name=file_area.lib_list.dir_list_array>file_area.lib_list.dir_list array</a> <br><font size=-1>File Transfer Directories (current user has access to)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>file_area.lib_list.dir_list</tt> -<a name=file_area.lib_list.dir_list_properties> properties</a> +<a name=file_area.lib_list.dir_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2791,6 +3056,8 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>directory name <tr valign=top><td><b>description</b><td>string <td>directory description +<tr valign=top><td><b>area_tag</b><td>string +<td>directory area tag for file echoes <i>(introduced in v3.19)</i> <tr valign=top><td><b>path</b><td>string <td>directory file storage location <tr valign=top><td><b>ars</b><td>string @@ -2814,7 +3081,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>seqdev</b><td>number <td>sequential (slow storage) device number <tr valign=top><td><b>sort</b><td>number -<td>sort order (see <tt>SORT_*</tt> in <tt>sbbsdefs.js</tt> for valid values) +<td>sort order (see <tt>FileBase.SORT</tt> for valid values) <tr valign=top><td><b>max_files</b><td>number <td>configured maximum number of files <tr valign=top><td><b>max_age</b><td>number @@ -2825,6 +3092,10 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>percent of file size awarded uploader in credits upon subsequent downloads <tr valign=top><td><b>link</b><td>string <td>directory link (for HTML index) +<tr valign=top><td><b>files</b><td>number +<td>number of files currently in this directory <i>(introduced in v3.18c)</i> +<tr valign=top><td><b>update_time</b><td>number +<td>timestamp of file base index of this directory <i>(introduced in v3.19)</i> <tr valign=top><td><b>can_access</b><td>boolean <td>user has sufficient access to view this directory (e.g. list files) <i>(introduced in v3.18)</i> <tr valign=top><td><b>can_upload</b><td>boolean @@ -2842,25 +3113,25 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>is_sysop</b><td>boolean <td>directory is for uploads to sysop only <i>(introduced in v3.14)</i> </table> -<h2><a name=xtrn_area>xtrn_area object</a> +<h2><a name=xtrn_area_object>xtrn_area object</a> <br><font size=-1>External Program Areas</font> <font size=-1> - introduced in v3.10</font> </h2> -<h2><a name=xtrn_area.sec>xtrn_area.sec object</a> +<h2><a name=xtrn_area.sec_object>xtrn_area.sec object</a> <br><font size=-1>Associative array of all external program sections (use internal code as index)</font> <font size=-1> - introduced in v3.12</font> </h2> -<h2><a name=xtrn_area.prog>xtrn_area.prog object</a> +<h2><a name=xtrn_area.prog_object>xtrn_area.prog object</a> <br><font size=-1>Associative array of all external programs (use internal code as index)</font> <font size=-1> - introduced in v3.11</font> </h2> -<h2><a name=xtrn_area.sec_list>xtrn_area.sec_list array</a> +<h2><a name=xtrn_area.sec_list_array>xtrn_area.sec_list array</a> <br><font size=-1>Online Program (door) Sections (current user has access to)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>xtrn_area.sec_list</tt> -<a name=xtrn_area.sec_list_properties> properties</a> +<a name=xtrn_area.sec_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2882,13 +3153,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>can_access</b><td>boolean <td>user has sufficient access to enter this section <i>(introduced in v3.15)</i> </table> -<h2><a name=xtrn_area.sec_list.prog_list>xtrn_area.sec_list.prog_list array</a> +<h2><a name=xtrn_area.sec_list.prog_list_array>xtrn_area.sec_list.prog_list array</a> <br><font size=-1>Online External Programs (doors) (current user has access to)</font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>xtrn_area.sec_list.prog_list</tt> -<a name=xtrn_area.sec_list.prog_list_properties> properties</a> +<a name=xtrn_area.sec_list.prog_list_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -2938,49 +3209,67 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>can_run</b><td>boolean <td>user has sufficient access to run this program </table> -<h2><a name=xtrn_area.event>xtrn_area.event object</a> +<h2><a name=xtrn_area.event_object>xtrn_area.event object</a> <br><font size=-1>Associative array of all timed events (use internal code as index)</font> <font size=-1> - introduced in v3.11</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>xtrn_area.event</tt> -<a name=xtrn_area.event_properties> properties</a> +<a name=xtrn_area.event_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> <font color="white">Name</font> <th align=left width=100> <font color="white">Type</font> +<th align=left width=50> +<font color="white">Ver</font> <th align=left> <font color="white">Description</font> <tr valign=top><td><b>cmd</b><td>string +<td>3.11 <td>command-line <tr valign=top><td><b>startup_dir</b><td>string +<td>3.11 <td>startup directory <tr valign=top><td><b>node_num</b><td>number +<td>3.11 <td>node number <tr valign=top><td><b>time</b><td>number -<td>time to execute +<td>3.11 +<td>time to execute (minutes since midnight) <tr valign=top><td><b>freq</b><td>number +<td>3.11 <td>frequency to execute <tr valign=top><td><b>days</b><td>number +<td>3.11 <td>days of week to execute (bitfield) <tr valign=top><td><b>mdays</b><td>number +<td>3.11 <td>days of month to execute (bitfield) <tr valign=top><td><b>months</b><td>number +<td>3.11 <td>months of year to execute (bitfield) <tr valign=top><td><b>last_run</b><td>number -<td>date/time last run (in time_t format) +<td>3.11 +<td>date/time of last run (in time_t format) +<tr valign=top><td><b>next_run</b><td>number +<td>3.18c +<td>date/time of next run (in time_t format) +<tr valign=top><td><b>error_level</b><td>number +<td>3.18c +<td>error log level <tr valign=top><td><b>settings</b><td>number +<td>3.11 <td>toggle options (bitfield) </table> -<h2><a name=xtrn_area.editor>xtrn_area.editor object</a> +<h2><a name=xtrn_area.editor_object>xtrn_area.editor object</a> <br><font size=-1>Associative array of all external editors (use internal code as index)</font> <font size=-1> - introduced in v3.11</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>xtrn_area.editor</tt> -<a name=xtrn_area.editor_properties> properties</a> +<a name=xtrn_area.editor_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3000,14 +3289,14 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>type</b><td>number <td>drop file type </table> -<h2><a name=MsgBase>MsgBase class</a> +<h2><a name=MsgBase_class>MsgBase class</a> <br><font size=-1>Class used for accessing message bases</font> <font size=-1> - introduced in v3.10</font> </h2> <p>To create a new MsgBase object: <tt>var msgbase = new MsgBase('<i>code</i>')</tt><br>where <i>code</i> is a sub-board internal code, or <tt>mail</tt> for the e-mail message base.<p>The MsgBase retrieval methods that accept a <tt>by_offset</tt> argument as their optional first boolean argument will interpret the following <i>number</i> argument as either a 1-based unique message number (by_offset=<tt>false</tt>) or a 0-based message index-offset (by_offset=<tt>true</tt>). Retrieving messages by offset is faster than by number or message-id (string). Passing an existing message <i>header object</i> to the retrieval methods that support it (e.g. <tt>get_msg_body()</tt>) is even faster. </p> <table border=1 width=100%> <caption align=left><b><tt>MsgBase</tt> -<a name=MsgBase_methods> methods</a> +<a name=MsgBase_class_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3052,7 +3341,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>mark message for deletion <tr valign=top><td><b>save_msg</b><td>boolean<td><tt>MsgBase.save_msg(object header [,client=<i>none</i>] [,body_text=<tt>""</tt>] [,array rcpt_list=<i>none</i>]) <td>3.12 -<td>create a new message in message base, the <i>header</i> object may contain the following properties:<br><table><tr><td align=top><tt>subject</tt><td>Message subject <i>(required)</i><tr><td align=top><tt>to</tt><td>Recipient's name <i>(required)</i><tr><td align=top><tt>to_ext</tt><td>Recipient's user number (for local e-mail)<tr><td align=top><tt>to_org</tt><td>Recipient's organization<tr><td align=top><tt>to_net_type</tt><td>Recipient's network type (default: 0 for local)<tr><td align=top><tt>to_net_addr</tt><td>Recipient's network address<tr><td align=top><tt>to_agent</tt><td>Recipient's agent type<tr><td align=top><tt>to_list</tt><td>Comma-separated listed of primary recipients, RFC822-style<tr><td align=top><tt>cc_list</tt><td>Comma-separated listed of secondary recipients, RFC822-style<tr><td align=top><tt>from</tt><td>Sender's name <i>(required)</i><tr><td align=top><tt>from_ext</tt><td>Sender's user number<tr><td align=top><tt>from_org</tt><td>Sender's organization<tr><td align=top><tt>from_net_type</tt><td>Sender's network type (default: 0 for local)<tr><td align=top><tt>from_net_addr</tt><td>Sender's network address<tr><td align=top><tt>from_agent</tt><td>Sender's agent type<tr><td align=top><tt>from_ip_addr</tt><td>Sender's IP address (if available, for security tracking)<tr><td align=top><tt>from_host_name</tt><td>Sender's host name (if available, for security tracking)<tr><td align=top><tt>from_protocol</tt><td>TCP/IP protocol used by sender (if available, for security tracking)<tr><td align=top><tt>from_port</tt><td>TCP/UDP port number used by sender (if available, for security tracking)<tr><td align=top><tt>sender_userid</tt><td>Sender's user ID (if available, for security tracking)<tr><td align=top><tt>sender_server</tt><td>Server's host name (if available, for security tracking)<tr><td align=top><tt>sender_time</tt><td>Time/Date message was received from sender (if available, for security tracking)<tr><td align=top><tt>replyto</tt><td>Replies should be sent to this name<tr><td align=top><tt>replyto_ext</tt><td>Replies should be sent to this user number<tr><td align=top><tt>replyto_org</tt><td>Replies should be sent to organization<tr><td align=top><tt>replyto_net_type</tt><td>Replies should be sent to this network type<tr><td align=top><tt>replyto_net_addr</tt><td>Replies should be sent to this network address<tr><td align=top><tt>replyto_agent</tt><td>Replies should be sent to this agent type<tr><td align=top><tt>replyto_list</tt><td>Comma-separated list of mailboxes to reply-to, RFC822-style<tr><td align=top><tt>mime-version</tt><td>MIME Version (optional)<tr><td align=top><tt>content-type</tt><td>MIME Content-Type (optional)<tr><td align=top><tt>summary</tt><td>Message Summary (optional)<tr><td align=top><tt>tags</tt><td>Message Tags (space-delimited, optional)<tr><td align=top><tt>id</tt><td>Message's RFC-822 compliant Message-ID<tr><td align=top><tt>reply_id</tt><td>Message's RFC-822 compliant Reply-ID<tr><td align=top><tt>reverse_path</tt><td>Message's SMTP sender address<tr><td align=top><tt>forward_path</tt><td>Argument to SMTP 'RCPT TO' command<tr><td align=top><tt>path</tt><td>Messages's NNTP path<tr><td align=top><tt>newsgroups</tt><td>Message's NNTP newsgroups header<tr><td align=top><tt>ftn_msgid</tt><td>FidoNet FTS-9 Message-ID<tr><td align=top><tt>ftn_reply</tt><td>FidoNet FTS-9 Reply-ID<tr><td align=top><tt>ftn_area</tt><td>FidoNet FTS-4 echomail AREA tag<tr><td align=top><tt>ftn_flags</tt><td>FidoNet FSC-53 FLAGS<tr><td align=top><tt>ftn_pid</tt><td>FidoNet FSC-46 Program Identifier<tr><td align=top><tt>ftn_tid</tt><td>FidoNet FSC-46 Tosser Identifier<tr><td align=top><tt>ftn_charset</tt><td>FidoNet FTS-5003 Character Set Identifier<tr><td align=top><tt>date</tt><td>RFC-822 formatted date/time<tr><td align=top><tt>attr</tt><td>Attribute bitfield<tr><td align=top><tt>auxattr</tt><td>Auxillary attribute bitfield<tr><td align=top><tt>netattr</tt><td>Network attribute bitfield<tr><td align=top><tt>when_written_time</tt><td>Date/time (in time_t format)<tr><td align=top><tt>when_written_zone</tt><td>Time zone (in SMB format)<tr><td align=top><tt>when_written_zone_offset</tt><td>Time zone in minutes east of UTC<tr><td align=top><tt>when_imported_time</tt><td>Date/time message was imported<tr><td align=top><tt>when_imported_zone</tt><td>Time zone (in SMB format)<tr><td align=top><tt>when_imported_zone_offset</tt><td>Time zone in minutes east of UTC<tr><td align=top><tt>thread_id</tt><td>Thread identifier (originating message number)<tr><td align=top><tt>thread_back</tt><td>Message number that this message is a reply to<tr><td align=top><tt>thread_next</tt><td>Message number of the next reply to the original message in this thread<tr><td align=top><tt>thread_first</tt><td>Message number of the first reply to this message<tr><td align=top><tt>votes</tt><td>Bit-field of votes if ballot, maximum allowed votes per ballot if poll<tr><td align=top><tt>priority</tt><td>Priority value following the <i>X-Priority</i> email header schcme (1 = highest, 3 = normal, 5 = lowest, 0 = unspecified)<tr><td align=top><tt>delivery_attempts</tt><td>Number of failed delivery attempts (e.g. over SMTP)<tr><td align=top><tt>field_list[].type</tt><td>Other SMB header fields (type)<tr><td align=top><tt>field_list[].data</tt><td>Other SMB header fields (data)<tr><td align=top><tt>can_read</tt><td>true if the current user can read this validated or unmoderated message</table><br><i>New in v3.12:</i> The optional <i>client</i> argument is an instance of the <i>Client</i> class to be used for the security log header fields (e.g. sender IP address, hostname, protocol, and port). As of version 3.16c, the global client object will be used if this is omitted.<br><br><i>New in v3.12:</i> The optional <i>rcpt_list</i> is an array of objects that specifies multiple recipients for a single message (e.g. bulk e-mail). Each object in the array may include the following header properties (described above): <br><i>to</i>, <i>to_ext</i>, <i>to_org</i>, <i>to_net_type</i>, <i>to_net_addr</i>, and <i>to_agent</i> +<td>create a new message in message base, the <i>header</i> object may contain the following properties:<br><table><tr><td align=top><tt>subject</tt><td>Message subject <i>(required)</i><tr><td align=top><tt>to</tt><td>Recipient's name <i>(required)</i><tr><td align=top><tt>to_ext</tt><td>Recipient's user number (for local e-mail)<tr><td align=top><tt>to_org</tt><td>Recipient's organization<tr><td align=top><tt>to_net_type</tt><td>Recipient's network type (default: 0 for local)<tr><td align=top><tt>to_net_addr</tt><td>Recipient's network address<tr><td align=top><tt>to_agent</tt><td>Recipient's agent type<tr><td align=top><tt>to_list</tt><td>Comma-separated listed of primary recipients, RFC822-style<tr><td align=top><tt>cc_list</tt><td>Comma-separated listed of secondary recipients, RFC822-style<tr><td align=top><tt>from</tt><td>Sender's name <i>(required)</i><tr><td align=top><tt>from_ext</tt><td>Sender's user number<tr><td align=top><tt>from_org</tt><td>Sender's organization<tr><td align=top><tt>from_net_type</tt><td>Sender's network type (default: 0 for local)<tr><td align=top><tt>from_net_addr</tt><td>Sender's network address<tr><td align=top><tt>from_agent</tt><td>Sender's agent type<tr><td align=top><tt>from_ip_addr</tt><td>Sender's IP address (if available, for security tracking)<tr><td align=top><tt>from_host_name</tt><td>Sender's host name (if available, for security tracking)<tr><td align=top><tt>from_protocol</tt><td>TCP/IP protocol used by sender (if available, for security tracking)<tr><td align=top><tt>from_port</tt><td>TCP/UDP port number used by sender (if available, for security tracking)<tr><td align=top><tt>sender_userid</tt><td>Sender's user ID (if available, for security tracking)<tr><td align=top><tt>sender_server</tt><td>Server's host name (if available, for security tracking)<tr><td align=top><tt>sender_time</tt><td>Time/Date message was received from sender (if available, for security tracking)<tr><td align=top><tt>replyto</tt><td>Replies should be sent to this name<tr><td align=top><tt>replyto_ext</tt><td>Replies should be sent to this user number<tr><td align=top><tt>replyto_org</tt><td>Replies should be sent to organization<tr><td align=top><tt>replyto_net_type</tt><td>Replies should be sent to this network type<tr><td align=top><tt>replyto_net_addr</tt><td>Replies should be sent to this network address<tr><td align=top><tt>replyto_agent</tt><td>Replies should be sent to this agent type<tr><td align=top><tt>replyto_list</tt><td>Comma-separated list of mailboxes to reply-to, RFC822-style<tr><td align=top><tt>mime_version</tt><td>MIME Version (optional)<tr><td align=top><tt>content_type</tt><td>MIME Content-Type (optional)<tr><td align=top><tt>summary</tt><td>Message Summary (optional)<tr><td align=top><tt>tags</tt><td>Message Tags (space-delimited, optional)<tr><td align=top><tt>id</tt><td>Message's RFC-822 compliant Message-ID<tr><td align=top><tt>reply_id</tt><td>Message's RFC-822 compliant Reply-ID<tr><td align=top><tt>reverse_path</tt><td>Message's SMTP sender address<tr><td align=top><tt>forward_path</tt><td>Argument to SMTP 'RCPT TO' command<tr><td align=top><tt>path</tt><td>Messages's NNTP path<tr><td align=top><tt>newsgroups</tt><td>Message's NNTP newsgroups header<tr><td align=top><tt>ftn_msgid</tt><td>FidoNet FTS-9 Message-ID<tr><td align=top><tt>ftn_reply</tt><td>FidoNet FTS-9 Reply-ID<tr><td align=top><tt>ftn_area</tt><td>FidoNet FTS-4 echomail AREA tag<tr><td align=top><tt>ftn_flags</tt><td>FidoNet FSC-53 FLAGS<tr><td align=top><tt>ftn_pid</tt><td>FidoNet FSC-46 Program Identifier<tr><td align=top><tt>ftn_tid</tt><td>FidoNet FSC-46 Tosser Identifier<tr><td align=top><tt>ftn_charset</tt><td>FidoNet FTS-5003 Character Set Identifier<tr><td align=top><tt>date</tt><td>RFC-822 formatted date/time<tr><td align=top><tt>attr</tt><td>Attribute bitfield<tr><td align=top><tt>auxattr</tt><td>Auxillary attribute bitfield<tr><td align=top><tt>netattr</tt><td>Network attribute bitfield<tr><td align=top><tt>when_written_time</tt><td>Date/time (in time_t format)<tr><td align=top><tt>when_written_zone</tt><td>Time zone (in SMB format)<tr><td align=top><tt>when_written_zone_offset</tt><td>Time zone in minutes east of UTC<tr><td align=top><tt>when_imported_time</tt><td>Date/time message was imported<tr><td align=top><tt>when_imported_zone</tt><td>Time zone (in SMB format)<tr><td align=top><tt>when_imported_zone_offset</tt><td>Time zone in minutes east of UTC<tr><td align=top><tt>thread_id</tt><td>Thread identifier (originating message number)<tr><td align=top><tt>thread_back</tt><td>Message number that this message is a reply to<tr><td align=top><tt>thread_next</tt><td>Message number of the next reply to the original message in this thread<tr><td align=top><tt>thread_first</tt><td>Message number of the first reply to this message<tr><td align=top><tt>votes</tt><td>Bit-field of votes if ballot, maximum allowed votes per ballot if poll<tr><td align=top><tt>priority</tt><td>Priority value following the <i>X-Priority</i> email header schcme (1 = highest, 3 = normal, 5 = lowest, 0 = unspecified)<tr><td align=top><tt>delivery_attempts</tt><td>Number of failed delivery attempts (e.g. over SMTP)<tr><td align=top><tt>field_list[].type</tt><td>Other SMB header fields (type)<tr><td align=top><tt>field_list[].data</tt><td>Other SMB header fields (data)<tr><td align=top><tt>can_read</tt><td>true if the current user can read this validated or unmoderated message</table><br><i>New in v3.12:</i> The optional <i>client</i> argument is an instance of the <i>Client</i> class to be used for the security log header fields (e.g. sender IP address, hostname, protocol, and port). As of version 3.16c, the global client object will be used if this is omitted.<br><br><i>New in v3.12:</i> The optional <i>rcpt_list</i> is an array of objects that specifies multiple recipients for a single message (e.g. bulk e-mail). Each object in the array may include the following header properties (described above): <br><i>to</i>, <i>to_ext</i>, <i>to_org</i>, <i>to_net_type</i>, <i>to_net_addr</i>, and <i>to_agent</i> <tr valign=top><td><b>vote_msg</b><td>boolean<td><tt>MsgBase.vote_msg(object header) <td>3.17 <td>create a new vote in message base, the <i>header</i> object should contain the following properties:<br><table><tr><td align=top><tt>from</tt><td>Sender's name <i>(required)</i><tr><td align=top><tt>from_ext</tt><td>Sender's user number (if applicable)<tr><td align=top><tt>from_net_type</tt><td>Sender's network type (default: 0 for local)<tr><td align=top><tt>from_net_addr</tt><td>Sender's network address<tr><td align=top><tt>reply_id</tt><td>The Reply-ID of the message being voted on (or specify thread_back)<tr><td align=top><tt>thread_back</tt><td>Message number of the message being voted on<tr><td align=top><tt>attr</tt><td>Should be either MSG_UPVOTE, MSG_DOWNVOTE, or MSG_VOTE (if answer to poll)</table> @@ -3072,7 +3361,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <br> <table border=1 width=100%> <caption align=left><b><tt>MsgBase</tt> -<a name=MsgBase_properties> properties</a> +<a name=MsgBase_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3126,13 +3415,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.10 <td><i>true</i> if the message base has been opened successfully - <small>READ ONLY</small> </table> -<h2><a name=MsgBase.cfg>MsgBase.cfg object</a> +<h2><a name=MsgBase.cfg_object>MsgBase.cfg object</a> <br><font size=-1>Configuration parameters for this message area (<i>sub-boards only</i>) - <small>READ ONLY</small></font> <font size=-1> - introduced in v3.10</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>MsgBase.cfg</tt> -<a name=MsgBase.cfg_properties> properties</a> +<a name=MsgBase.cfg_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3158,9 +3447,11 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>description</b><td>string <td>sub-board description <tr valign=top><td><b>qwk_name</b><td>string -<td>sub-board QWK name +<td>QWK conference name +<tr valign=top><td><b>area_tag</b><td>string +<td>area tag for FidoNet-style echoes, a.k.a. EchoTag <i>(introduced in v3.19)</i> <tr valign=top><td><b>newsgroup</b><td>string -<td>newsgroup name (as configured or dymamically generated) +<td>newsgroup name (as configured or dynamically generated) <tr valign=top><td><b>ars</b><td>string <td>sub-board access requirements <tr valign=top><td><b>read_ars</b><td>string @@ -3194,14 +3485,209 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>print_mode_neg</b><td>number <td>print mode flags to <i>negate</i> when printing messages - see <tt>P_*</tt> in <tt>sbbsdefs.js</tt> for details </table> -<h2><a name=File>File class</a> +<h2><a name=MsgBase_class_object>MsgBase class object</a> +</h2> +<h2><a name=MsgBase.IndexPrototype_object>MsgBase.IndexPrototype object</a> +<br><font size=-1>Prototype for all index objects. Can be used to extend these objects.</font> +<font size=-1> - introduced in v3.17</font> +</h2> +<h2><a name=MsgBase.HeaderPrototype_object>MsgBase.HeaderPrototype object</a> +<br><font size=-1>Prototype for all header objects. Can be used to extend these objects.</font> +<font size=-1> - introduced in v3.17</font> +</h2> +<h2><a name=FileBase_class>FileBase class</a> +<br><font size=-1>Class used for accessing file databases</font> +<font size=-1> - introduced in v3.19</font> +</h2> +<p>To create a new FileBase object: <tt>var filebase = new FileBase('<i>code</i>')</tt><br>where <i>code</i> is a directory internal code.</p> +<table border=1 width=100%> +<caption align=left><b><tt>FileBase</tt> +<a name=FileBase_class_methods> methods</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Returns</font> +<th align=left width=200> +<font color="white">Usage</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>open</b><td>boolean<td><tt>FileBase.open() +<td>3.19 +<td>open file base +<tr valign=top><td><b>close</b><td>boolean<td><tt>FileBase.close() +<td>3.19 +<td>close file base (if open) +<tr valign=top><td><b>get</b><td>object<td><tt>FileBase.get(filename or file-meta-object [,detail=FileBase.DETAIL.NORM]) +<td>3.19 +<td>get a file metadata object or <tt>null</tt> on failure. The file-meta-object may contain the following properties (depending on <i>detail</i> value):<br><table><tr><td align=top><tt>name</tt><td>Filename <i>(required)</i><tr><td align=top><tt>desc</tt><td>Description (summary, 58 chars or less)<tr><td align=top><tt>extdesc</tt><td>Extended description (multi-line description, e.g. DIZ)<tr><td align=top><tt>author</tt><td>File author name (e.g. from SAUCE record)<tr><td align=top><tt>author_org</tt><td>File author organization (group, e.g. from SAUCE record)<tr><td align=top><tt>from</tt><td>Uploader's user name (e.g. for awarding credits)<tr><td align=top><tt>from_ip_addr</tt><td>Uploader's IP address (if available, for security tracking)<tr><td align=top><tt>from_host_name</tt><td>Uploader's host name (if available, for security tracking)<tr><td align=top><tt>from_protocol</tt><td>TCP/IP protocol used by uploader (if available, for security tracking)<tr><td align=top><tt>from_port</tt><td>TCP/UDP port number used by uploader (if available, for security tracking)<tr><td align=top><tt>to_list</tt><td>Comma-separated listed of recipient user numbers (for user-to-user transfers)<tr><td align=top><tt>tags</tt><td>Space-separated list of tags<tr><td align=top><tt>anon</tt><td><tt>true</tt> if the file was uploaded anonymously<tr><td align=top><tt>size</tt><td>File size, in bytes, at the time of upload<tr><td align=top><tt>cost</tt><td>File credit value (0=free)<tr><td align=top><tt>time</tt><td>File modification date/time (in time_t format)<tr><td align=top><tt>added</tt><td>Date/time file was uploaded/imported (in time_t format)<tr><td align=top><tt>last_downlaoded</tt><td>Date/time file was last downloaded (in time_t format) or 0=never<tr><td align=top><tt>times_downloaded</tt><td>Total number of times file has been downloaded<tr><td align=top><tt>crc16</tt><td>16-bit CRC of file contents<tr><td align=top><tt>crc32</tt><td>32-bit CRC of file contents<tr><td align=top><tt>md5</tt><td>128-bit MD5 digest of file contents (hexadecimal)<tr><td align=top><tt>sha1</tt><td>160-bit SHA-1 digest of file contents (hexadecimal)<tr><td align=top><tt>metadata</tt><td>File metadata in JSON format</table> +<tr valign=top><td><b>get_list</b><td>array<td><tt>FileBase.get_list([filespec] [,detail=FileBase.DETAIL.NORM] [,since-time=0] [,sort=true [,order]]) +<td>3.19 +<td>get a list (array) of file metadata objects, the default sort order is the sysop-configured order or <tt>FileBase.SORT.NAME_AI</tt> +<tr valign=top><td><b>get_name</b><td>string<td><tt>FileBase.get_name(path/filename) +<td>3.19 +<td>returns index-formatted (e.g. shortened) version of filename without path (file base does not have to be open) +<tr valign=top><td><b>get_names</b><td>array<td><tt>FileBase.get_names([filespec] [,since-time=0] [,sort=true [,order]]) +<td>3.19 +<td>get a list of index-formatted (e.g. shortened) filenames (strings) from file base index, the default sort order is the sysop-configured order or <tt>FileBase.SORT.NAME_AI</tt> +<tr valign=top><td><b>get_path</b><td>string<td><tt>FileBase.get_path(filename) +<td>3.19 +<td>get the full path to the local file +<tr valign=top><td><b>get_size</b><td>number<td><tt>FileBase.get_size(filename) +<td>3.19 +<td>get the size of the local file, in bytes, or -1 if it does not exist +<tr valign=top><td><b>get_time</b><td>number<td><tt>FileBase.get_time(filename) +<td>3.19 +<td>get the modification date/time stamp of the local file +<tr valign=top><td><b>add</b><td>boolean<td><tt>FileBase.add(file-meta-object [,use_diz_always=false] [,object client=none]) +<td>3.19 +<td>add a file to the file base, returning <tt>true</tt> on success or <tt>false</tt> upon failure. +<tr valign=top><td><b>remove</b><td>boolean<td><tt>FileBase.remove(filename [,delete=false]) +<td>3.19 +<td>remove an existing file from the file base and optionally delete file, may throw exception on errors (e.g. file remove failure) +<tr valign=top><td><b>update</b><td>boolean<td><tt>FileBase.update(filename, file-meta-object [,use_diz_always=false] [,readd_always=false]) +<td>3.19 +<td>update an existing file in the file base, may throw exception on errors (e.g. file rename failure) +<tr valign=top><td><b>renew</b><td>boolean<td><tt>FileBase.renew(filename) +<td>3.19 +<td>remove and re-add (as new) an existing file in the file base +<tr valign=top><td><b>hash</b><td>object<td><tt>FileBase.hash(filename_or_fullpath) +<td>3.19 +<td>calculate hashes of a file's contents (file base does not have to be open) +<tr valign=top><td><b>dump</b><td>array<td><tt>FileBase.dump(filename) +<td>3.19 +<td>dump file header fields to an array of strings for diagnostic uses +<tr valign=top><td><b>format_name</b><td>string<td><tt>FileBase.format_name(path/filename [,number size=13] [,boolean pad=false]) +<td>3.19 +<td>returns formatted (e.g. shortened) version of filename without path (file base does not have to be open) for display +</table> +<br> +<table border=1 width=100%> +<caption align=left><b><tt>FileBase</tt> +<a name=FileBase_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>error</b><td>string +<td>3.19 +<td>last occurred file base error description - <small>READ ONLY</small> +<tr valign=top><td><b>status</b><td>number +<td>3.19 +<td>return value of last <i>SMB Library</i> function call - <small>READ ONLY</small> +<tr valign=top><td><b>file</b><td>string +<td>3.19 +<td>base path and filename of file base - <small>READ ONLY</small> +<tr valign=top><td><b>retry_time</b><td>number +<td>3.19 +<td>file base open/lock retry timeout (in seconds) +<tr valign=top><td><b>retry_delay</b><td>number +<td>3.19 +<td>delay between file base open/lock retries (in milliseconds) +<tr valign=top><td><b>first_file</b><td>number +<td>3.19 +<td>first file number - <small>READ ONLY</small> +<tr valign=top><td><b>last_file</b><td>number +<td>3.19 +<td>last file number - <small>READ ONLY</small> +<tr valign=top><td><b>last_file_time</b><td>number +<td>3.19 +<td>timestamp of last file - <small>READ ONLY</small> +<tr valign=top><td><b>files</b><td>number +<td>3.19 +<td>total number of files - <small>READ ONLY</small> +<tr valign=top><td><b>update_time</b><td>number +<td>3.19 +<td>timestamp of file base index (only writable when file base is closed) +<tr valign=top><td><b>max_files</b><td>number +<td>3.19 +<td>maximum number of files before expiration - <small>READ ONLY</small> +<tr valign=top><td><b>max_age</b><td>number +<td>3.19 +<td>maximum age (in days) of files to store - <small>READ ONLY</small> +<tr valign=top><td><b>attributes</b><td>number +<td>3.19 +<td>file base attributes - <small>READ ONLY</small> +<tr valign=top><td><b>dirnum</b><td>number +<td>3.19 +<td>directory number (0-based, -1 if invalid) - <small>READ ONLY</small> +<tr valign=top><td><b>is_open</b><td>boolean +<td>3.19 +<td><i>true</i> if the file base has been opened successfully - <small>READ ONLY</small> +</table> +<h2><a name=FileBase_class_object>FileBase class object</a> +</h2> +<h2><a name=FileBase.DETAIL_object>FileBase.DETAIL object</a> +<br><font size=-1>Detail level numeric constants (in increasing verbosity)</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>FileBase.DETAIL</tt> +<a name=FileBase.DETAIL_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>MIN</b><td>number +<td>Include indexed-filenames only +<tr valign=top><td><b>NORM</b><td>number +<td>Normal level of file detail (e.g. full filenames, minimal metadata) +<tr valign=top><td><b>EXTENDED</b><td>number +<td>Normal level of file detail plus extended descriptions +<tr valign=top><td><b>METADATA</b><td>number +<td>Normal level of file detail plus extended descriptions and JSON-metadata +<tr valign=top><td><b>MAX</b><td>number +<td>Maximum file detail, include undefined/null property values +</table> +<h2><a name=FileBase.SORT_object>FileBase.SORT object</a> +<br><font size=-1>Sort order numeric constants</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>FileBase.SORT</tt> +<a name=FileBase.SORT_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>NATURAL</b><td>number +<td>Natural sort order (same as DATE_A) +<tr valign=top><td><b>NAME_AI</b><td>number +<td>Filename ascending, case insensitive sort order +<tr valign=top><td><b>NAME_DI</b><td>number +<td>Filename descending, case insensitive sort order +<tr valign=top><td><b>NAME_AS</b><td>number +<td>Filename ascending, case sensitive sort order +<tr valign=top><td><b>NAME_DS</b><td>number +<td>Filename descending, case sensitive sort order +<tr valign=top><td><b>DATE_A</b><td>number +<td>Import date/time ascending sort order +<tr valign=top><td><b>DATE_D</b><td>number +<td>Import date/time descending sort order +</table> +<h2><a name=File_class>File class</a> <br><font size=-1>Class used for opening, creating, reading, or writing files on the local file system<p>Special features include:</h2><ol type=disc><li>Exclusive-access files (default) or shared files<ol type=circle><li>optional record-locking<li>buffered or non-buffered I/O</ol><li>Support for binary files<ol type=circle><li>native or network byte order (endian)<li>automatic Unix-to-Unix (<i>UUE</i>), yEncode (<i>yEnc</i>) or Base64 encoding/decoding</ol><li>Support for ASCII text files<ol type=circle><li>supports line-based I/O<ol type=square><li>entire file may be read or written as an array of strings<li>individual lines may be read or written one line at a time</ol><li>supports fixed-length records<ol type=square><li>optional end-of-text (<i>etx</i>) character for automatic record padding/termination<li>Synchronet <tt>.dat</tt> files use an <i>etx</i> value of 3 (Ctrl-C)</ol><li>supports <tt>.ini</tt> formated configuration files<ol type=square><li>concept and support of <i>root</i> ini sections added in v3.12</ol><li>optional ROT13 encoding/translation</ol><li>Dynamically-calculated industry standard checksums (e.g. CRC-16, CRC-32, MD5)</ol></font> <font size=-1> - introduced in v3.10</font> </h2> <p>To create a new File object: <tt>var f = new File(<i>filename</i>)</tt></p> <table border=1 width=100%> <caption align=left><b><tt>File</tt> -<a name=File_methods> methods</a> +<a name=File_class_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3216,7 +3702,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <font color="white">Description</font> <tr valign=top><td><b>open</b><td>boolean<td><tt>File.open([mode=<tt>"w+"</tt>] [,shareable=<tt>false</tt>] [,buffer_length]) <td>3.10 -<td>open file, <i>shareable</i> defaults to <i>false</i>, <i>buffer_length</i> defaults to 2048 bytes, mode (default: <tt>'w+'</tt>) specifies the type of access requested for the file, as follows:<br><tt>r </tt> open for reading; if the file does not exist or cannot be found, the open call fails<br><tt>w </tt> open an empty file for writing; if the given file exists, its contents are destroyed<br><tt>a </tt> open for writing at the end of the file (appending); creates the file first if it doesn't exist<br><tt>r+</tt> open for both reading and writing (the file must exist)<br><tt>w+</tt> open an empty file for both reading and writing; if the given file exists, its contents are destroyed<br><tt>a+</tt> open for reading and appending<br><tt>b </tt> open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed (e.g. <tt>r+b</tt>)<br><tt>x </tt> open a <i>non-shareable</i> file (that must not already exist) for <i>exclusive</i> access <i>(introduced in v3.17)</i><br><br><b>Note:</b> When using the <tt>iniSet</tt> methods to modify a <tt>.ini</tt> file, the file must be opened for both reading <b>and</b> writing.<br><br><b>Note:</b> To open an existing or create a new file for both reading and writing (e.g. updating an <tt>.ini</tt> file) use the <i>exists</i> property like so:<br><tt>file.open(file.exists ? 'r+':'w+');</tt><br><b>Note:</b> When <i>shareable</i> is false, uses nopen() which will lock the file and perform automatic retries. The lock mode is as follows:<br><tt>r </tt> DENYWRITE - Allows other scripts to open the file for reading, but not for writing.<br><tt>w </tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>a </tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>r+</tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>w+</tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>a+</tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br>When <i>shareable</i> is true uses fopen(), and will only attempt to open the file once and will perform no locking. The behavior when one script has a file opened with <i>shareable</i> set to a different value than is used with a new call is OS specific. On Windows, the second open will always fail and on *nix, the second open will always succeed.<br> +<td>open file, <i>shareable</i> defaults to <i>false</i>, <i>buffer_length</i> defaults to 2048 bytes, mode (default: <tt>'w+'</tt>) specifies the type of access requested for the file, as follows:<br><tt>r </tt> open for reading; if the file does not exist or cannot be found, the open call fails<br><tt>w </tt> open an empty file for writing; if the given file exists, its contents are destroyed<br><tt>a </tt> open for writing at the end of the file (appending); creates the file first if it doesn't exist<br><tt>r+</tt> open for both reading and writing (the file must exist)<br><tt>w+</tt> open an empty file for both reading and writing; if the given file exists, its contents are destroyed<br><tt>a+</tt> open for reading and appending<br><tt>b </tt> open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed (e.g. <tt>r+b</tt>)<br><tt>x </tt> open a <i>non-shareable</i> file (that must not already exist) for <i>exclusive</i> access <i>(introduced in v3.17)</i><br><br><b>Note:</b> When using the <tt>iniSet</tt> methods to modify a <tt>.ini</tt> file, the file must be opened for both reading <b>and</b> writing.<br><br><b>Note:</b> To open an existing or create a new file for both reading and writing (e.g. updating an <tt>.ini</tt> file) use the <i>exists</i> property like so:<br><tt>file.open(file.exists ? 'r+':'w+');</tt><br><br><b>Note:</b> When <i>shareable</i> is false, uses nopen() which will lock the file and perform automatic retries. The lock mode is as follows:<br><tt>r </tt> DENYWRITE - Allows other scripts to open the file for reading, but not for writing.<br><tt>w </tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>a </tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>r+</tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>w+</tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br><tt>a+</tt> DENYALL - Does not allow other scripts to open the file when <i>shareable</i> is set to true<br>When <i>shareable</i> is true uses fopen(), and will only attempt to open the file once and will perform no locking. The behavior when one script has a file opened with <i>shareable</i> set to a different value than is used with a new call is OS specific. On Windows, the second open will always fail and on *nix, the second open will always succeed.<br> <tr valign=top><td><b>popen</b><td>boolean<td><tt>File.popen([mode=<tt>"r+"</tt>] [,buffer_length]) <td>3.15 <td>open pipe to command, <i>buffer_length</i> defaults to 2048 bytes, mode (default: <tt>'r+'</tt>) specifies the type of access requested for the file, as follows:<br><tt>r </tt> read the programs stdout;<br><tt>w </tt> write to the programs stdin<br><tt>r+</tt> open for both reading stdout and writing stdin<br>(<b>only functional on UNIX systems</b>) @@ -3249,7 +3735,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>read a string from file (optionally unix-to-unix or base64 decoding in the process), <i>maxlen</i> defaults to the current length of the file minus the current file position <tr valign=top><td><b>readln</b><td>string<td><tt>File.readln([maxlen=<tt>512</tt>]) <td>3.10 -<td>read a line-feed terminated string, <i>maxlen</i> defaults to 512 characters +<td>read a line-feed terminated string, <i>maxlen</i> defaults to 512 characters. Returns <i>null</i> upon end of file. <tr valign=top><td><b>readBin</b><td>number<td><tt>File.readBin([bytes=<tt>4</tt> [,count=<tt>1</tt>]) <td>3.10 <td>read one or more binary integers from the file, default number of <i>bytes</i> is 4 (32-bits). if count is not equal to 1, an array is returned (even if no integers were read) @@ -3270,7 +3756,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>write a new-line terminated string (a line of text) to the file <tr valign=top><td><b>writeBin</b><td>boolean<td><tt>File.writeBin(value(s) [,bytes=<tt>4</tt>]) <td>3.10 -<td>write one or more binary integers to the file, default number of <i>bytes</i> is 4 (32-bits).If value is an array, writes the entire array to the file. +<td>write one or more binary integers to the file, default number of <i>bytes</i> is 4 (32-bits). If value is an array, writes the entire array to the file. <tr valign=top><td><b>writeAll</b><td>boolean<td><tt>File.writeAll(array lines) <td>3.10 <td>write an array of new-line terminated strings (lines of text) to the file @@ -3292,15 +3778,15 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>iniSetValue</b><td>boolean<td><tt>File.iniSetValue(section, key, [value=<i>none</i>]) <td>3.12 <td>set the specified <i>key</i> to the specified <i>value</i> in the specified <i>section</i> of a <tt>.ini</tt> file. to set a key in the <i>root</i> section, pass <i>null</i> for <i>section</i>. -<tr valign=top><td><b>iniGetObject</b><td>object<td><tt>File.iniGetObject([section=<i>root</i>] [lowercase=<tt>false</tt>]) +<tr valign=top><td><b>iniGetObject</b><td>object<td><tt>File.iniGetObject([section=<i>root</i>] [,lowercase=<tt>false</tt>] [,blanks=<tt>false</tt>]) <td>3.11 -<td>parse an entire section from a .ini file and return all of its keys (optionally lowercased) and values as properties of an object. if <i>section</i> is <tt>null</tt> or <tt>undefined</tt>, returns keys and values from the <i>root</i> section. Returns <i>null</i> if the specified <i>section</i> does not exist in the file or the file has not been opened. +<td>parse an entire section from a .ini file and return all of its keys (optionally lowercased) and values as properties of an object. If <i>section</i> is <tt>null</tt> or <tt>undefined</tt>, returns keys and values from the <i>root</i> section. If <i>blanks</i> is <tt>true</tt> then empty string (instead of <tt>undefined</tt>) values may included in the returned object.Returns <i>null</i> if the specified <i>section</i> does not exist in the file or the file has not been opened. <tr valign=top><td><b>iniSetObject</b><td>boolean<td><tt>File.iniSetObject(section, object) <td>3.12 <td>write all the properties of the specified <i>object</i> as separate <tt>key=value</tt> pairs in the specified <i>section</i> of a <tt>.ini</tt> file. to write an object in the <i>root</i> section, pass <i>null</i> for <i>section</i>. <br><b>Note:</b> this method does not remove unreferenced keys from an existing section. If your intention is to <i>replace</i> an existing section, use the <tt>iniRemoveSection</tt> function first. -<tr valign=top><td><b>iniGetAllObjects</b><td>array<td><tt>File.iniGetAllObjects([name_property] [,prefix=<i>none</i>] [lowercase=<tt>false</tt>]) +<tr valign=top><td><b>iniGetAllObjects</b><td>array<td><tt>File.iniGetAllObjects([name_property] [,prefix=<i>none</i>] [,lowercase=<tt>false</tt>] [,blanks=<tt>false</tt>]) <td>3.11 -<td>parse all sections from a .ini file and return all (non-<i>root</i>) sections in an array of objects with each section's keys (optionally lowercased) as properties of each object. <i>name_property</i> is the name of the property to create to contain the section's name (optionally lowercased, default is <tt>"name"</tt>), the optional <i>prefix</i> has the same use as in the <tt>iniGetSections</tt> method, if a <i>prefix</i> is specified, it is removed from each section's name +<td>parse all sections from a .ini file and return all (non-<i>root</i>) sections in an array of objects with each section's keys (optionally lowercased) as properties of each object. <i>name_property</i> is the name of the property to create to contain the section's name (optionally lowercased, default is <tt>"name"</tt>), the optional <i>prefix</i> has the same use as in the <tt>iniGetSections</tt> method. If a (String) <i>prefix</i> is specified, it is removed from each section's name. If <i>blanks</i> is <tt>true</tt> then empty string (instead of <tt>undefined</tt>) values may be included in the returned objects. <tr valign=top><td><b>iniSetAllObjects</b><td>boolean<td><tt>File.iniSetAllObjects(object array [,name_property=<tt>"name"</tt>]) <td>3.12 <td>write an array of objects to a .ini file, each object in its own section named after the object's <i>name_property</i> (default: <tt>name</tt>) @@ -3310,11 +3796,14 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>iniRemoveSection</b><td>boolean<td><tt>File.iniRemoveSection(section) <td>3.14 <td>remove specified <i>section</i> from <tt>.ini</tt> file. +<tr valign=top><td><b>iniReadAll</b><td>array<td><tt>File.iniReadAll() +<td>3.18c +<td>read entire <tt>.ini</tt> file into an array of string (with <tt>!include</tt>ed files). </table> <br> <table border=1 width=100%> <caption align=left><b><tt>File</tt> -<a name=File_properties> properties</a> +<a name=File_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3394,18 +3883,73 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>md5_base64</b><td>undefined <td>3.11 <td>calculated 128-bit MD5 digest of file contents as base64-encoded string - <small>READ ONLY</small> +<tr valign=top><td><b>sha1_hex</b><td>undefined +<td>3.19 +<td>ini style: minimum key length (for left-justified white-space padded keys) +<tr valign=top><td><b>sha1_base64</b><td>undefined +<td>3.19 +<td>ini style: key prefix (e.g. ' ', null = default prefix) <tr valign=top><td><b>ini_key_len</b><td>number <td>3.17 -<td>ini style: minimum key length (for left-justified white-space padded keys) +<td>ini style: section separator (e.g. ' +', null = default separator) +</table> +<h2><a name=Archive_class>Archive class</a> +<br><font size=-1>Class used for opening, creating, reading, or writing archive files on the local file system<p></font> +<font size=-1> - introduced in v3.19</font> +</h2> +<p>To create a new Archive object: <tt>var a = new Archive(<i>filename</i>)</tt></p> +<table border=1 width=100%> +<caption align=left><b><tt>Archive</tt> +<a name=Archive_class_methods> methods</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Returns</font> +<th align=left width=200> +<font color="white">Usage</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>create</b><td>number<td><tt>Archive.create([string format] [,boolean with_path = false] [,array file_list]) +<td>3.19 +<td>create an archive of the specified format, returns the number of files archived, will throw exception upon error +<tr valign=top><td><b>read</b><td>string<td><tt>Archive.read(string path/filename) +<td>3.19 +<td>read and return the contents of the specified archived text file +<tr valign=top><td><b>extract</b><td>number<td><tt>Archive.extract(output_directory [,boolean with_path = false] [,number max_files = 0] [,string file/pattern [...]]) +<td>3.19 +<td>extract files from an archive to specified output directory, returns the number of files extracted, will throw exception upon error +<tr valign=top><td><b>list</b><td>array<td><tt>Archive.list([,boolean hash = false] [,string file/pattern]) +<td>3.19 +<td>get list of archive contents as an array of objects<br>archived object properties:<br><ul><li>string <tt>type</tt> - item type: 'file', 'link', or 'directory'<li>string <tt>name</tt> - item path/name<li>string <tt>path</tt> - source path<li>string <tt>symlink</tt><li>string <tt>hardlink</tt><li>number <tt>size</tt> - item size in bytes<li>number <tt>time</tt> - modification date/time in time_t format<li>number <tt>mode</tt> - permissions/mode flags<li>string <tt>user</tt> - owner name<li>string <tt>group</tt> - owner group<li>string <tt>format</tt> - archive format<li>string <tt>compression</tt> - compression method<li>string <tt>fflags</tt><li>number <tt>crc16</tt> - 16-bit CRC, when hash is true and type is file<li>number <tt>crc32</tt> - 32-bit CRC, when hash is true and type is file<li>string <tt>md5</tt> - hexadecimal MD-5 sum, when hash is true and type is file<li>string <tt>sha1</tt> - hexadecimal SHA-1 sum, when hash is true and type is file</ul>when <tt>hash</tt> is <tt>true</tt>, calculates and returns hash/digest values of files in stored archive +</table> +<br> +<table border=1 width=100%> +<caption align=left><b><tt>Archive</tt> +<a name=Archive_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>type</b><td>string +<td>format/compression type of archive file - <small>READ ONLY</small> </table> -<h2><a name=Queue>Queue class</a> +<h2><a name=Queue_class>Queue class</a> <br><font size=-1>Class for bi-directional message queues. Used for inter-thread/module communications.</font> <font size=-1> - introduced in v3.12</font> </h2> <p>To create a new (named) Queue object: <tt>var q = new Queue(<i>name</i>)</tt></p> <table border=1 width=100%> <caption align=left><b><tt>Queue</tt> -<a name=Queue_methods> methods</a> +<a name=Queue_class_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3434,7 +3978,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <br> <table border=1 width=100%> <caption align=left><b><tt>Queue</tt> -<a name=Queue_properties> properties</a> +<a name=Queue_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3464,14 +4008,14 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.17c <td><i>true</i> if the owner of the queue has detached from the queue </table> -<h2><a name=Socket>Socket class</a> +<h2><a name=Socket_class>Socket class</a> <br><font size=-1>Class used for TCP/IP socket communications</font> <font size=-1> - introduced in v3.10</font> </h2> <p>To create a new Socket object: <tt>load('sockdefs.js'); var s = new Socket(<i>type</i>, <i>protocol</i> ,<i>ipv6</i>=false)</tt><br>where <i>type</i> = <tt>SOCK_STREAM</tt> for TCP (default) or <tt>SOCK_DGRAM</tt> for UDP<br>and <i>protocol</i> (optional) = the name of the protocol or service the socket is to be used for<br>To create a socket from an existing socket descriptor: <tt>var s = new Socket(true, <i>descriptor</i>)</tt><br>where <i>descriptor</i> is the numerical value of an existing valid socket descriptor</p> <table border=1 width=100%> <caption align=left><b><tt>Socket</tt> -<a name=Socket_methods> methods</a> +<a name=Socket_class_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3541,11 +4085,23 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>poll</b><td>number<td><tt>Socket.poll([timeout=<tt>0</tt>] [,write=<tt>false</tt>]) <td>3.10 <td>poll socket for read or write ability (default is <i>read</i>), default timeout value is 0.0 seconds (immediate timeout) +<tr valign=top><td><b>on</b><td>number<td><tt>Socket.on(('read' | 'write'), callback) +<td>3.19 +<td>execute callback whenever socket is readable/writable. Returns an id to be passed to js.clearOn() +<tr valign=top><td><b>once</b><td>number<td><tt>Socket.once(('read' | 'write'), callback) +<td>3.19 +<td>execute callback next time socket is readable/writable Returns and id to be passed to js.clearOnce() +<tr valign=top><td><b>clearOn</b><td>number<td><tt>Socket.clearOn(('read' | 'write'), id) +<td>3.19 +<td>remove callback installed by Socket.on() +<tr valign=top><td><b>clearOnce</b><td>number<td><tt>Socket.clearOnce(('read' | 'write'), id) +<td>3.19 +<td>remove callback installed by Socket.once() </table> <br> <table border=1 width=100%> <caption align=left><b><tt>Socket</tt> -<a name=Socket_properties> properties</a> +<a name=Socket_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3617,24 +4173,42 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>N/A <td>array of socket option names supported by the current platform </table> -<h2><a name=ConnectedSocket>ConnectedSocket class</a> +<h2><a name=Socket_class_object>Socket class object</a> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>Socket</tt> +<a name=Socket_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>PF_INET</b><td>number +<tr valign=top><td><b>PF_INET6</b><td>number +<tr valign=top><td><b>AF_INET</b><td>number +<tr valign=top><td><b>AF_INET6</b><td>number +</table> +<h2><a name=ConnectedSocket_class>ConnectedSocket class</a> <br><font size=-1>Class used for outgoing TCP/IP socket communications</font> <font size=-1> - introduced in v3.17</font> </h2> <p>To create a new ConnectedSocket object: <tt>load('sockdefs.js'); var s = new ConnectedSocket(<i>hostname</i>, <i>port</i>, {domain:<i>domain</i>, proto:<i>proto</i> ,type:<i>type</i>, protocol:<i>protocol</i>, timeout:<i>timeout</i>, bindport:<i>port</i>, bindaddrs:<i>bindaddrs</i>})</tt><br>where <i>domain</i> (optional) = <tt>PF_UNSPEC</tt> (default) for IPv4 or IPv6, <tt>PF_INET</tt> for IPv4, or <tt>PF_INET6</tt> for IPv6<br><i>proto</i> (optional) = <tt>IPPROTO_IP</tt> (default)<br><i>type</i> (optional) = <tt>SOCK_STREAM</tt> for TCP (default) or <tt>SOCK_DGRAM</tt> for UDP<br><i>protocol</i> (optional) = the name of the protocol or service the socket is to be used for<br><i>timeout</i> (optional) = 10 (default) the number of seconds to wait for each connect() call to complete.<br><i>bindport</i> (optional) = the name or number of the source port to bind to<br><i>bindaddrs</i> (optional) = the name or number of the source addresses to bind to. The first of each IPv4 or IPv6 type is used for that family.<br></p> -<h2><a name=ListeningSocket>ListeningSocket class</a> +<h2><a name=ListeningSocket_class>ListeningSocket class</a> <br><font size=-1>Class used for incoming TCP/IP socket communications</font> <font size=-1> - introduced in v3.17</font> </h2> <p>To create a new ListeningSocket object: <tt>load('sockdefs.js'); var s = new ListeningSocket(<i>interface</i>, <i>port</i> ,<i>protocol</i>, {domain:<i>domain</i>, type:<i>type</i>, proto:<i>proto</i>, retry_count:<i>retry_count</i>, retry_delay:<i>retry_delay</i>})</tt><br>where <i>interface</i> = A array or strings or a single string of hostnames or address optionally including a :port suffix<br><i>port</i> = a port to use when the interface doesn't specify one<br><i>protocol</i> = protocol name, used for socket options and logging.<br><i>domain</i> (optional) = <tt>PF_UNSPEC</tt> (default) for IPv4 or IPv6, <tt>AF_INET</tt> for IPv4, or <tt>AF_INET6</tt> for IPv6<br><i>proto</i> (optional) = <tt>IPPROTO_IP</tt> (default)<br><i>type</i> (optional) = <tt>SOCK_STREAM</tt> for TCP (default) or <tt>SOCK_DGRAM</tt> for UDP<br><i>retry_count</i> (optional) = <tt>0</tt> (default) number of times to retry binding<br>and <i>retry_delay</i> (optional) = <tt>15</tt> (default) seconds to wait before a retry<br></p> -<h2><a name=COM>COM class</a> +<h2><a name=COM_class>COM class</a> <br><font size=-1>Class used for serial port communications</font> <font size=-1> - introduced in v3.15b</font> </h2> <p>To create a new COM object: var c = new COM('<i>device</i>')</tt><br>where <i>device</i> = <tt>COMx</tt> (e.g. COM1) for Win32 or <tt>/dev/ttyXY</tt> for *nix (e.g. /dev/ttyu0)</p> <table border=1 width=100%> <caption align=left><b><tt>COM</tt> -<a name=COM_methods> methods</a> +<a name=COM_class_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3675,7 +4249,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <br> <table border=1 width=100%> <caption align=left><b><tt>COM</tt> -<a name=COM_properties> properties</a> +<a name=COM_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3723,171 +4297,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.15 <td>Data Carrier Detect </table> -<h2><a name=CryptContext>CryptContext class</a> -<br><font size=-1>Class used for encryption/decryption</font> -<font size=-1> - introduced in v3.16b</font> +<h2><a name=conio_object>conio object</a> +<br><font size=-1>Console Input/Output Object (DOS conio library functionality for jsexec)</font> +<font size=-1> - introduced in v3.15</font> </h2> -<p>To create a new CryptContext object: var c = new CryptContext('<i>algorithm</i>')</tt><br>where <i>algorithm</i> is a property of CryptContext.ALGO</p> <table border=1 width=100%> -<caption align=left><b><tt>CryptContext</tt> -<a name=CryptContext_methods> methods</a> -</b></caption> -<tr bgcolor=gray> -<th align=left width=100> -<font color="white">Name</font> -<th align=left width=100> -<font color="white">Returns</font> -<th align=left width=200> -<font color="white">Usage</font> -<th align=left width=50> -<font color="white">Ver</font> -<th align=left> -<font color="white">Description</font> -<tr valign=top><td><b>generate_key</b><td>void<td><tt>CryptContext.generate_key() -<td>3.16 -<td>Generate a new key for the context. -<tr valign=top><td><b>set_key</b><td>void<td><tt>CryptContext.set_key(key_str) -<td>3.16 -<td>Set the key for the context directly. -<tr valign=top><td><b>derive_key</b><td>void<td><tt>CryptContext.derive_key(keying_data) -<td>3.16 -<td>Derive the key from the keying data using keying_algo, keying_iterations, and keying_salt. -<tr valign=top><td><b>encrypt</b><td>string<td><tt>CryptContext.encrypt(plaintext) -<td>3.16 -<td>Encrypt the string and return as a new string. -<tr valign=top><td><b>decrypt</b><td>string<td><tt>CryptContext.decrypt(ciphertext) -<td>3.16 -<td>Decrypt the string and return as a new string. -<tr valign=top><td><b>create_signature</b><td>string<td><tt>CryptContext.create_signature(sigContext) -<td>3.16 -<td>Create a signature signed with the sigContext CryptContext object. -</table> -<br> -<table border=1 width=100%> -<caption align=left><b><tt>CryptContext</tt> -<a name=CryptContext_properties> properties</a> -</b></caption> -<tr bgcolor=gray> -<th align=left width=100> -<font color="white">Name</font> -<th align=left width=100> -<font color="white">Type</font> -<th align=left width=50> -<font color="white">Ver</font> -<th align=left> -<font color="white">Description</font> -<tr valign=top><td><b>algo</b><td>number -<td>3.16 -<td>Algorithm constant (CryptContext.ALGO.XXX):<ul class="showList"> -<li>CryptContext.ALGO.NONE</li> -<li>CryptContext.ALGO.DES</li> -<li>CryptContext.ALGO.3DES</li> -<li>CryptContext.ALGO.IDEA</li> -<li>CryptContext.ALGO.CAST</li> -<li>CryptContext.ALGO.RC2</li> -<li>CryptContext.ALGO.RC4</li> -<li>CryptContext.ALGO.AES</li> -<li>CryptContext.ALGO.DH</li> -<li>CryptContext.ALGO.RSA</li> -<li>CryptContext.ALGO.DSA</li> -<li>CryptContext.ALGO.ELGAMAL</li> -<li>CryptContext.ALGO.ECDSA</li> -<li>CryptContext.ALGO.ECDH</li> -<li>CryptContext.ALGO.MD5</li> -<li>CryptContext.ALGO.SHA1</li> -<li>CryptContext.ALGO.SHA2</li> -<li>CryptContext.ALGO.SHAng</li> -<li>CryptContext.ALGO.HMAC-SHA1</li> -<li>CryptContext.ALGO.HMAC-SHA2</li> -<li>CryptContext.ALGO.HMAC-SHAng</li></ul> -<tr valign=top><td><b>blocksize</b><td>number -<td>3.16 -<td>Cipher block size in bytes -<tr valign=top><td><b>hashvalue</b><td>undefined -<td>3.16 -<td>Output of hasing algorithms (ie: MD5, SHA1, etc) -<tr valign=top><td><b>iv</b><td>undefined -<td>3.16 -<td>Cipher IV -<tr valign=top><td><b>ivsize</b><td>number -<td>3.16 -<td>Cipher IV size in bytes -<tr valign=top><td><b>keying_algo</b><td>undefined -<td>3.16 -<td>The keying algorithm used to derive the key -<tr valign=top><td><b>keying_iterations</b><td>number -<td>3.16 -<td>The number of iterates used to derive the key -<tr valign=top><td><b>keying_salt</b><td>undefined -<td>3.16 -<td>The salt value used to derive an encryption key from a key (Length must be between 8 and 64) -<tr valign=top><td><b>keysize</b><td>number -<td>3.16 -<td>Key size in bytes -<tr valign=top><td><b>label</b><td>undefined -<td>3.16 -<td>Key label -<tr valign=top><td><b>mode</b><td>number -<td>3.16 -<td>Mode constant (CryptContext.MODE.XXX):<ul class="showList"> -<li>CryptContext.MODE.None</li> -<li>CryptContext.MODE.ECB</li> -<li>CryptContext.MODE.CBC</li> -<li>CryptContext.MODE.CFB</li> -<li>CryptContext.MODE.GCM</li></ul> -<tr valign=top><td><b>algo_name</b><td>string -<td>3.16 -<td>Algorithm name -<tr valign=top><td><b>mode_name</b><td>string -<td>3.16 -<td>Mode name -</table> -<h2><a name=CryptKeyset>CryptKeyset class</a> -<br><font size=-1>Class used for storing CryptContext keys</font> -<font size=-1> - introduced in v3.16b</font> -</h2> -<p>To create a new CryptKeyset object: var c = new CryptKeyset('<i>filename</i>' [ <i>opts = CryptKeyset.KEYOPT.NONE</i> ])</tt><br> where <i>filename</i> is the name of the file to create, and <i>opts</i> is a value from CryptKeyset.KEYOPT</p> -<table border=1 width=100%> -<caption align=left><b><tt>CryptKeyset</tt> -<a name=CryptKeyset_methods> methods</a> -</b></caption> -<tr bgcolor=gray> -<th align=left width=100> -<font color="white">Name</font> -<th align=left width=100> -<font color="white">Returns</font> -<th align=left width=200> -<font color="white">Usage</font> -<th align=left width=50> -<font color="white">Ver</font> -<th align=left> -<font color="white">Description</font> -<tr valign=top><td><b>add_private_key</b><td>void<td><tt>CryptKeyset.add_private_key(CryptContext, password) -<td>3.16 -<td>Add a private key to the keyset, encrypting it with <password>. -<tr valign=top><td><b>add_public_key</b><td>void<td><tt>CryptKeyset.add_public_key(CryptCert) -<td>3.16 -<td>Add a public key (certificate) to the keyset. -<tr valign=top><td><b>close</b><td>void<td><tt>CryptKeyset.close() -<td>3.16 -<td>Close the keyset. -<tr valign=top><td><b>delete_key</b><td>void<td><tt>CryptKeyset.delete_key(label) -<td>3.16 -<td>Delete the key with <label> from the keyset. -<tr valign=top><td><b>get_private_key</b><td>object<td><tt>CryptKeyset.get_private_key(label, password) -<td>3.16 -<td>Returns a CryptContext from the private key with <label> encrypted with <password>. -<tr valign=top><td><b>get_public_key</b><td>object<td><tt>CryptKeyset.get_public_key(label) -<td>3.16 -<td>Returns a CryptCert from the public key with <label>. -</table> -<h2><a name=conio>conio object</a> -<br><font size=-1>Console Input/Output Object (DOS conio library functionality for jsexec)</font> -<font size=-1> - introduced in v3.15</font> -</h2> -<table border=1 width=100%> -<caption align=left><b><tt>conio</tt> -<a name=conio_methods> methods</a> +<caption align=left><b><tt>conio</tt> +<a name=conio_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -3991,7 +4407,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <br> <table border=1 width=100%> <caption align=left><b><tt>conio</tt> -<a name=conio_properties> properties</a> +<a name=conio_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -4075,13 +4491,13 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.15 <td>Current attribute is high intensity </table> -<h2><a name=uifc>uifc object</a> +<h2><a name=uifc_object>uifc object</a> <br><font size=-1>User InterFaCe object - used for jsexec menus</font> <font size=-1> - introduced in v3.14</font> </h2> <table border=1 width=100%> <caption align=left><b><tt>uifc</tt> -<a name=uifc_methods> methods</a> +<a name=uifc_object_methods> methods</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -4106,20 +4522,35 @@ Property and Method version numbers (when available) indicate the Synchronet ver <tr valign=top><td><b>pop</b><td>void<td><tt>uifc.pop([string text]) <td>3.14 <td>popup (or down) a message -<tr valign=top><td><b>input</b><td>string<td><tt>uifc.input([number mode] [number left] [number top] [string default] [number maxlen] [number kmode]) +<tr valign=top><td><b>input</b><td>string<td><tt>uifc.input([number mode] [,number left] [,number top] [,string default] [,number maxlen] [,number kmode]) <td>3.14 <td>prompt for a string input -<tr valign=top><td><b>list</b><td>string<td><tt>uifc.list([number mode] [string title] [string array options] [uifc.list.CTX object]) +<tr valign=top><td><b>list</b><td>number<td><tt>uifc.list([number mode,] string title, array options [,uifc.list.CTX object]) <td>3.14 <td>select from a list of options.<br>The context object can be created using new uifc.list.CTX() and if the same object is passed, allows WIN_SAV to work correctly.<br>The context object has the following properties:<br>cur, bar, top, left, width <tr valign=top><td><b>showhelp</b><td>void<td><tt>uifc.showhelp() <td>3.17 <td>Shows the current help text +<tr valign=top><td><b>scrn</b><td>boolean<td><tt>uifc.scrn(string text) +<td>3.18c +<td>Fill the screen with the appropriate background attribute. string is the title for the application banner. +<tr valign=top><td><b>showbuf</b><td>void<td><tt>uifc.showbuf(number mode, string title, string helpbuf [,uifc.showbuf.CTX object]) +<td>3.18c +<td>Shows a scrollable text buffer - optionally parsing "help markup codes"<br>The context object can be created using new uifc.showbuf.CTX() and if the same object is passed, allows WIN_SAV to work correctly.<br>The context object has the following properties: cur, bar, top, left, width, height +<tr valign=top><td><b>timedisplay</b><td>void<td><tt>uifc.timedisplay([bool force = false]) +<td>3.18c +<td>Updates time in upper left corner of screen with current time in ASCII/Unix format +<tr valign=top><td><b>bottomline</b><td>void<td><tt>uifc.bottomline(number mode) +<td>3.18c +<td>Displays the bottom line using the WIN_* mode flags +<tr valign=top><td><b>getstrxy</b><td>string<td><tt>uifc.getstrxy(number left, number top, number width, number max, number mode[, string original][, uifc.getstrxy.CTX object]) +<td>3.18c +<td>String input/exit box at a specified positionThe context object can be created using new uifc.showbuf.CTX() and if the same object is passed, allows WIN_SAV to work correctly.<br>The context object has the following properties: lastkey </table> <br> <table border=1 width=100%> <caption align=left><b><tt>uifc</tt> -<a name=uifc_properties> properties</a> +<a name=uifc_object_properties> properties</a> </b></caption> <tr bgcolor=gray> <th align=left width=100> @@ -4138,7 +4569,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>current mode bits (see uifcdefs.js) <tr valign=top><td><b>changes</b><td>boolean <td>3.14 -<td>a change has occured in an input call. You are expected to set this to false before calling the input if you care about it. +<td>a change has occurred in an input call. You are expected to set this to false before calling the input if you care about it. <tr valign=top><td><b>save_num</b><td>number <td>3.14 <td>save buffer depth (advanced) @@ -4150,7 +4581,7 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>current screen width <tr valign=top><td><b>list_height</b><td>number <td>3.14 -<td>when WIN_FIXEDHEIGHT is set, specifies the hight used by a list method +<td>when WIN_FIXEDHEIGHT is set, specifies the height used by a list method <tr valign=top><td><b>esc_delay</b><td>number <td>3.14 <td>delay before a single ESC char is parsed and assumed to not be an ANSI sequence (advanced) @@ -4173,5 +4604,1392 @@ Property and Method version numbers (when available) indicate the Synchronet ver <td>3.14 <td>lightbar colour </table> +<h2><a name=CryptContext_class>CryptContext class</a> +<br><font size=-1>Class used for encryption/decryption</font> +<font size=-1> - introduced in v3.16b</font> +</h2> +<p>To create a new CryptContext object: var c = new CryptContext('<i>algorithm</i>')</tt><br>where <i>algorithm</i> is a property of CryptContext.ALGO</p> +<table border=1 width=100%> +<caption align=left><b><tt>CryptContext</tt> +<a name=CryptContext_class_methods> methods</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Returns</font> +<th align=left width=200> +<font color="white">Usage</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>generate_key</b><td>void<td><tt>CryptContext.generate_key() +<td>3.16 +<td>Generate a new key for the context. +<tr valign=top><td><b>set_key</b><td>void<td><tt>CryptContext.set_key(key_str) +<td>3.16 +<td>Set the key for the context directly. +<tr valign=top><td><b>derive_key</b><td>void<td><tt>CryptContext.derive_key(keying_data) +<td>3.16 +<td>Derive the key from the keying data using keying_algo, keying_iterations, and keying_salt. +<tr valign=top><td><b>encrypt</b><td>string<td><tt>CryptContext.encrypt(plaintext) +<td>3.16 +<td>Encrypt the string and return as a new string. +<tr valign=top><td><b>decrypt</b><td>string<td><tt>CryptContext.decrypt(ciphertext) +<td>3.16 +<td>Decrypt the string and return as a new string. +<tr valign=top><td><b>create_signature</b><td>string<td><tt>CryptContext.create_signature(sigContext) +<td>3.16 +<td>Create a signature signed with the sigContext CryptContext object. +</table> +<br> +<table border=1 width=100%> +<caption align=left><b><tt>CryptContext</tt> +<a name=CryptContext_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>algo</b><td>number +<td>3.16 +<td>Algorithm constant (CryptContext.ALGO.XXX) +<tr valign=top><td><b>blocksize</b><td>number +<td>3.16 +<td>Cipher block size in bytes +<tr valign=top><td><b>hashvalue</b><td>undefined +<td>3.16 +<td>Output of hasing algorithms (ie: MD5, SHA1, etc) +<tr valign=top><td><b>iv</b><td>undefined +<td>3.16 +<td>Cipher IV +<tr valign=top><td><b>ivsize</b><td>number +<td>3.16 +<td>Cipher IV size in bytes +<tr valign=top><td><b>keying_algo</b><td>undefined +<td>3.16 +<td>The keying algorithm used to derive the key +<tr valign=top><td><b>keying_iterations</b><td>number +<td>3.16 +<td>The number of iterates used to derive the key +<tr valign=top><td><b>keying_salt</b><td>undefined +<td>3.16 +<td>The salt value used to derive an encryption key from a key (Length must be between 8 and 64) +<tr valign=top><td><b>keysize</b><td>number +<td>3.16 +<td>Key size in bytes +<tr valign=top><td><b>label</b><td>undefined +<td>3.16 +<td>Key label +<tr valign=top><td><b>mode</b><td>number +<td>3.16 +<td>Mode constant (CryptContext.MODE.XXX) +<tr valign=top><td><b>algo_name</b><td>string +<td>3.16 +<td>Algorithm name +<tr valign=top><td><b>mode_name</b><td>string +<td>3.16 +<td>Mode name +</table> +<h2><a name=CryptContext_class_object>CryptContext class object</a> +</h2> +<h2><a name=CryptContext.ALGO_object>CryptContext.ALGO object</a> +<br><font size=-1>Associative array of crypto algorithm constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptContext.ALGO</tt> +<a name=CryptContext.ALGO_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>None</b><td>number +<td>No encryption +<tr valign=top><td><b>DES</b><td>number +<td><p>DES is a 64-bit block cipher with a 56-bit key. Note that this algorithm is no longer considered secure and should not be used. It is present in cryptlib only for compatibility with legacy applications.</p><p>Although cryptlib uses 64-bit DES keys, only 56 bits of the key are actually used. The least significant bit in each byte is used as a parity bit (cryptlib will set the correct parity values for you, so you don't have to worry about this). You can treat the algorithm as having a 64-bit key, but bear in mind that only the high 7 bits of each byte are actually used as keying material.</p><p>Loading a key will return a CRYPT_ERROR_PARAM3 error if the key is a weak key. cryptExportKey will export the correct parity-adjusted version of the key.</p> +<tr valign=top><td><b>3DES</b><td>number +<td><p>Triple DES is a 64-bit block cipher with a 112/168-bit key.</p><p>Although cryptlib uses 128, or 192-bit DES keys (depending on whether two- or three-key triple DES is being used), only 112 or 168 bits of the key are actually used. The least significant bit in each byte is used as a parity bit (cryptlib will set the correct parity values for you, so you don't have to worry about this). You can treat the algorithm as having a 128 or 192-bit key, but bear in mind that only the high 7 bits of each byte are actually used as keying material.</p><p>Loading a key will return a CRYPT_ERROR_PARAM3 error if the key is a weak key. cryptExportKey will export the correct parity-adjusted version of the key.</p> +<tr valign=top><td><b>IDEA</b><td>number +<td>IDEA is a 64-bit block cipher with a 128-bit key. IDEA was formerly covered by patents, but these have now all expired. +<tr valign=top><td><b>CAST</b><td>number +<td>CAST-128 is a 64-bit block cipher with a 128-bit key +<tr valign=top><td><b>RC2</b><td>number +<td>RC2 (disabled by default, used for PKCS #12) +<tr valign=top><td><b>RC4</b><td>number +<td>RC4 is an 8-bit stream cipher with a key of up to 1024 bits. Some weaknesses have been found in this algorithm, and it's proven to be extremely difficult to employ in a safe manner. For this reason it should not be used any more except for legacy application support, and is disabled by default.</p><p>The term "RC4" is trademarked in the US. It may be necessary to refer to it as "an algorithm compatible with RC4" in products that use RC4 and are distributed in the US. Common practice is to refer to it as ArcFour.</p> +<tr valign=top><td><b>AES</b><td>number +<td>AES is a 128-bit block cipher with a 128-bit key. +<tr valign=top><td><b>DH</b><td>number +<td><p>Diffie-Hellman is a key-agreement algorithm with a key size of up to 4096 bits.</p><p>Diffie-Hellman was formerly covered by a patent in the US, this has now expired.</p> +<tr valign=top><td><b>RSA</b><td>number +<td><p>RSA is a public-key encryption/digital signature algorithm with a key size of up to 4096 bits.</p><p>RSA was formerly covered by a patent in the US, this has now expired.</p> +<tr valign=top><td><b>DSA</b><td>number +<td><p>DSA is a digital signature algorithm with a key size of up to 1024 bits and has the cryptlib algorithm identifier CRYPT_ALGO_DSA.</p><p>DSA is covered by US patent 5,231,668, with the patent held by the US government. This patent has been made available royalty-free to all users world-wide. The US Department of Commerce is not aware of any other patents that would be infringed by the DSA. US patent 4,995,082, "Method for identifying subscribers and for generating and verifying electronic signatures in a data exchange system" ("the Schnorr patent") relates to the DSA algorithm but only applies to a very restricted set of smart-card based applications and does not affect the DSA implementation in cryptlib.</p> +<tr valign=top><td><b>ELGAMAL</b><td>number +<td><p>Elgamal is a public-key encryption/digital signature algorithm with a key size of up to 4096 bits.</p><p>Elgamal was formerly covered (indirectly) by a patent in the US, this has now expired.</p> +<tr valign=top><td><b>ECDSA</b><td>number +<td>ECDSA is a digital signature algorithm with a key size of up to 521 bits. +<tr valign=top><td><b>ECDH</b><td>number +<td>ECDH is a key-agreement algorithm with a key size of up to 521 bits. +<tr valign=top><td><b>MD5</b><td>number +<td>MD5 (only used for TLS 1.0/1.1) +<tr valign=top><td><b>SHA1</b><td>number +<td>SHA1 is a message digest/hash algorithm with a digest/hash size of 160 bits. This algorithm has poor long-term security prospects and should be deprecated in favour of SHA-2. +<tr valign=top><td><b>SHA2</b><td>number +<td>SHA2/SHA256 is a message digest/hash algorithm with a digest/hash size of 256 bits. +<tr valign=top><td><b>SHAng</b><td>number +<td>Future SHA-nextgen standard +<tr valign=top><td><b>HMAC-SHA1</b><td>number +<td>HMAC-SHA1 is a MAC algorithm with a key size of up to 1024 bits. +<tr valign=top><td><b>HMAC-SHA2</b><td>number +<td>HMAC-SHA2 is a MAC algorithm with a key size of up to 1024 bits. +<tr valign=top><td><b>HMAC-SHAng</b><td>number +<td>HMAC-future-SHA-nextgen +</table> +<h2><a name=CryptContext.MODE_object>CryptContext.MODE object</a> +<br><font size=-1>Associative array of crypto mode constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptContext.MODE</tt> +<a name=CryptContext.MODE_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>None</b><td>number +<td>No encryption mode +<tr valign=top><td><b>ECB</b><td>number +<td>ECB +<tr valign=top><td><b>CBC</b><td>number +<td>CBC +<tr valign=top><td><b>CFB</b><td>number +<td>CFB +<tr valign=top><td><b>GCM</b><td>number +<td>GCM +</table> +<h2><a name=CryptKeyset_class>CryptKeyset class</a> +<br><font size=-1>Class used for storing CryptContext keys</font> +<font size=-1> - introduced in v3.16b</font> +</h2> +<p>To create a new CryptKeyset object: var c = new CryptKeyset('<i>filename</i>' [ <i>opts = CryptKeyset.KEYOPT.NONE</i> ])</tt><br> where <i>filename</i> is the name of the file to create, and <i>opts</i> is a value from CryptKeyset.KEYOPT</p> +<table border=1 width=100%> +<caption align=left><b><tt>CryptKeyset</tt> +<a name=CryptKeyset_class_methods> methods</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Returns</font> +<th align=left width=200> +<font color="white">Usage</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>add_private_key</b><td>void<td><tt>CryptKeyset.add_private_key(CryptContext, password) +<td>3.16 +<td>Add a private key to the keyset, encrypting it with <password>. +<tr valign=top><td><b>add_public_key</b><td>void<td><tt>CryptKeyset.add_public_key(CryptCert) +<td>3.16 +<td>Add a public key (certificate) to the keyset. +<tr valign=top><td><b>close</b><td>void<td><tt>CryptKeyset.close() +<td>3.16 +<td>Close the keyset. +<tr valign=top><td><b>delete_key</b><td>void<td><tt>CryptKeyset.delete_key(label) +<td>3.16 +<td>Delete the key with <label> from the keyset. +<tr valign=top><td><b>get_private_key</b><td>object<td><tt>CryptKeyset.get_private_key(label, password) +<td>3.16 +<td>Returns a CryptContext from the private key with <label> encrypted with <password>. +<tr valign=top><td><b>get_public_key</b><td>object<td><tt>CryptKeyset.get_public_key(label) +<td>3.16 +<td>Returns a CryptCert from the public key with <label>. +</table> +<h2><a name=CryptKeyset_class_object>CryptKeyset class object</a> +</h2> +<h2><a name=CryptKeyset.KEYOPT_object>CryptKeyset.KEYOPT object</a> +<br><font size=-1>Associative array of keyset option constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptKeyset.KEYOPT</tt> +<a name=CryptKeyset.KEYOPT_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>NONE</b><td>number +<td>No special access options (this option implies read/write access). +<tr valign=top><td><b>READONLY</b><td>number +<td><p>Read-only keyset access. This option is automatically enabled by cryptlib for keyset types that have read-only restrictions enforced by the nature of the keyset, the operating system, or user access rights.</p><p>Unless you specifically require write access to the keyset, you should use this option since it allows cryptlib to optimise its buffering and access strategies for the keyset.</p> +<tr valign=top><td><b>CREATE</b><td>number +<td>Create a new keyset. This option is only valid for writeable keyset types, which includes keysets implemented as databases and cryptlib key files. +</table> +<h2><a name=CryptCert_class>CryptCert class</a> +<br><font size=-1>Class used for Certificates</font> +<font size=-1> - introduced in v3.16b</font> +</h2> +<p>To create a new CryptCert object: var c = new CryptCert('<i>type</i> | <i>cert</i>')</tt><br> where <i>type</i> is a value from CryptCert.TYPE and <i>cert</i> is a DER encoded certificate string</p> +<table border=1 width=100%> +<caption align=left><b><tt>CryptCert</tt> +<a name=CryptCert_class_methods> methods</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Returns</font> +<th align=left width=200> +<font color="white">Usage</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>add_extension</b><td>void<td><tt>CryptCert.add_extension(oid, critical, extension) +<td>3.16 +<td>Adds a DER encoded certificate extension. +<tr valign=top><td><b>check</b><td>boolean<td><tt>CryptCert.check() +<td>3.16 +<td>Checks the certificate for validity. +<tr valign=top><td><b>destroy</b><td>void<td><tt>CryptCert.destroy() +<td>3.16 +<td>Destroys the certificate. +<tr valign=top><td><b>export_cert</b><td>string<td><tt>CryptCert.export_cert(format) +<td>3.16 +<td>Exports the certificate in the format chosen from CryptCert.CERTFORMAT. +<tr valign=top><td><b>get_attribute</b><td>void<td><tt>CryptCert.get_attribute(attr, value) +<td>3.16 +<td>Sets the specified attribute to the specified value +<tr valign=top><td><b>get_attribute_string</b><td>void<td><tt>CryptCert.get_attribute_string(attr, value) +<td>3.16 +<td>Sets the specified attribute to the specified value +<tr valign=top><td><b>get_attribute_time</b><td>void<td><tt>CryptCert.get_attribute_time(attr, value) +<td>3.16 +<td>Sets the specified attribute to the specified value +<tr valign=top><td><b>set_attribute</b><td>void<td><tt>CryptCert.set_attribute(attr, value) +<td>3.16 +<td>Sets the specified attribute to the specified value +<tr valign=top><td><b>set_attribute_string</b><td>void<td><tt>CryptCert.set_attribute_string(attr, value) +<td>3.16 +<td>Sets the specified attribute to the specified value +<tr valign=top><td><b>set_attribute_time</b><td>void<td><tt>CryptCert.set_attribute_time(attr, value) +<td>3.16 +<td>Sets the specified attribute to the specified value +<tr valign=top><td><b>sign</b><td>void<td><tt>CryptCert.sign(key) +<td>3.16 +<td>Signs the certificate with the specified CryptContext +</table> +<br> +<table border=1 width=100%> +<caption align=left><b><tt>CryptCert</tt> +<a name=CryptCert_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left width=50> +<font color="white">Ver</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>selfsigned</b><td>number +<td>3.16 +<tr valign=top><td><b>immutable</b><td>number +<td>3.16 +<tr valign=top><td><b>xyzzy</b><td>number +<td>3.16 +<tr valign=top><td><b>certtype</b><td>number +<td>3.16 +<tr valign=top><td><b>fingerprint_sha1</b><td>undefined +<td>3.16 +<tr valign=top><td><b>fingerprint_sha2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>fingerprint_shang</b><td>undefined +<td>3.16 +<tr valign=top><td><b>current_certificate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>trusted_usage</b><td>undefined +<td>3.16 +<tr valign=top><td><b>trusted_implicit</b><td>undefined +<td>3.16 +<tr valign=top><td><b>signaturelevel</b><td>undefined +<td>3.16 +<tr valign=top><td><b>version</b><td>number +<td>3.16 +<tr valign=top><td><b>serialnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectpublickeyinfo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certificate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cacertificate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuername</b><td>undefined +<td>3.16 +<tr valign=top><td><b>validfrom</b><td>undefined +<td>3.16 +<tr valign=top><td><b>validto</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issueruniqueid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectuniqueid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certrequest</b><td>undefined +<td>3.16 +<tr valign=top><td><b>thisupdate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>nextupdate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revocationdate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revocationstatus</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certstatus</b><td>undefined +<td>3.16 +<tr valign=top><td><b>dn</b><td>undefined +<td>3.16 +<tr valign=top><td><b>pkiuser_id</b><td>undefined +<td>3.16 +<tr valign=top><td><b>pkiuser_issuepassword</b><td>undefined +<td>3.16 +<tr valign=top><td><b>pkiuser_revpassword</b><td>undefined +<td>3.16 +<tr valign=top><td><b>pkiuser_ra</b><td>undefined +<td>3.16 +<tr valign=top><td><b>countryname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>stateorprovincename</b><td>undefined +<td>3.16 +<tr valign=top><td><b>localityname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>organizationname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>organizationalunitname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>commonname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>othername_typeid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>othername_value</b><td>undefined +<td>3.16 +<tr valign=top><td><b>rfc822name</b><td>undefined +<td>3.16 +<tr valign=top><td><b>dnsname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>directoryname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>edipartyname_nameassigner</b><td>undefined +<td>3.16 +<tr valign=top><td><b>edipartyname_partyname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>uniformresourceidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ipaddress</b><td>undefined +<td>3.16 +<tr valign=top><td><b>registeredid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>challengepassword</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crlextreason</b><td>undefined +<td>3.16 +<tr valign=top><td><b>keyfeatures</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authorityinfoaccess</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authorityinfo_rtcs</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authorityinfo_ocsp</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authorityinfo_caissuers</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authorityinfo_certstore</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authorityinfo_crls</b><td>undefined +<td>3.16 +<tr valign=top><td><b>biometricinfo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>biometricinfo_type</b><td>undefined +<td>3.16 +<tr valign=top><td><b>biometricinfo_hashalgo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>biometricinfo_hash</b><td>undefined +<td>3.16 +<tr valign=top><td><b>biometricinfo_url</b><td>undefined +<td>3.16 +<tr valign=top><td><b>qcstatement</b><td>undefined +<td>3.16 +<tr valign=top><td><b>qcstatement_semantics</b><td>undefined +<td>3.16 +<tr valign=top><td><b>qcstatement_registrationauthority</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ipaddressblocks</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ipaddressblocks_addressfamily</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ipaddressblocks_prefix</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ipaddressblocks_min</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ipaddressblocks_max</b><td>undefined +<td>3.16 +<tr valign=top><td><b>autonomoussysids</b><td>undefined +<td>3.16 +<tr valign=top><td><b>autonomoussysids_asnum_id</b><td>undefined +<td>3.16 +<tr valign=top><td><b>autonomoussysids_asnum_min</b><td>undefined +<td>3.16 +<tr valign=top><td><b>autonomoussysids_asnum_max</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ocsp_nonce</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ocsp_response</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ocsp_response_ocsp</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ocsp_nocheck</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ocsp_archivecutoff</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectinfoaccess</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectinfo_timestamping</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectinfo_carepository</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectinfo_signedobjectrepository</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectinfo_rpkimanifest</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectinfo_signedobject</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_dateofcertgen</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_procuration</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_procure_country</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_procure_typeofsubstitution</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_procure_signingfor</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_authority</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_namingauthid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_namingauthurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_namingauthtext</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_professionitem</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_professionoid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_admissions_registrationnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_monetarylimit</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_monetary_currency</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_monetary_amount</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_monetary_exponent</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_declarationofmajority</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_declarationofmajority_country</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_restriction</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_certhash</b><td>undefined +<td>3.16 +<tr valign=top><td><b>sigg_additionalinformation</b><td>undefined +<td>3.16 +<tr valign=top><td><b>strongextranet</b><td>undefined +<td>3.16 +<tr valign=top><td><b>strongextranet_zone</b><td>undefined +<td>3.16 +<tr valign=top><td><b>strongextranet_id</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectdirectoryattributes</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectdir_type</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectdir_values</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectkeyidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>keyusage</b><td>undefined +<td>3.16 +<tr valign=top><td><b>privatekeyusageperiod</b><td>undefined +<td>3.16 +<tr valign=top><td><b>privatekey_notbefore</b><td>undefined +<td>3.16 +<tr valign=top><td><b>privatekey_notafter</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectaltname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issueraltname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>basicconstraints</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ca</b><td>undefined +<td>3.16 +<tr valign=top><td><b>pathlenconstraint</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crlnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crlreason</b><td>undefined +<td>3.16 +<tr valign=top><td><b>holdinstructioncode</b><td>undefined +<td>3.16 +<tr valign=top><td><b>invaliditydate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>deltacrlindicator</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuingdistributionpoint</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuingdist_fullname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuingdist_usercertsonly</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuingdist_cacertsonly</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuingdist_somereasonsonly</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuingdist_indirectcrl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certificateissuer</b><td>undefined +<td>3.16 +<tr valign=top><td><b>nameconstraints</b><td>undefined +<td>3.16 +<tr valign=top><td><b>permittedsubtrees</b><td>undefined +<td>3.16 +<tr valign=top><td><b>excludedsubtrees</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crldistributionpoint</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crldist_fullname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crldist_reasons</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crldist_crlissuer</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certificatepolicies</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certpolicyid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certpolicy_cpsuri</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certpolicy_organization</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certpolicy_noticenumbers</b><td>undefined +<td>3.16 +<tr valign=top><td><b>certpolicy_explicittext</b><td>undefined +<td>3.16 +<tr valign=top><td><b>policymappings</b><td>undefined +<td>3.16 +<tr valign=top><td><b>issuerdomainpolicy</b><td>undefined +<td>3.16 +<tr valign=top><td><b>subjectdomainpolicy</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authoritykeyidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authority_keyidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authority_certissuer</b><td>undefined +<td>3.16 +<tr valign=top><td><b>authority_certserialnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>policyconstraints</b><td>undefined +<td>3.16 +<tr valign=top><td><b>requireexplicitpolicy</b><td>undefined +<td>3.16 +<tr valign=top><td><b>inhibitpolicymapping</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkeyusage</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ms_individualcodesigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ms_commercialcodesigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ms_certtrustlistsigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ms_timestampsigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ms_servergatedcrypto</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ms_encryptedfilesystem</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_serverauth</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_clientauth</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_codesigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_emailprotection</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ipsecendsystem</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ipsectunnel</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ipsecuser</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_timestamping</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ocspsigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_directoryservice</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_anykeyusage</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_ns_servergatedcrypto</b><td>undefined +<td>3.16 +<tr valign=top><td><b>extkey_vs_servergatedcrypto_ca</b><td>undefined +<td>3.16 +<tr valign=top><td><b>crlstreamidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>freshestcrl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>freshestcrl_fullname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>freshestcrl_reasons</b><td>undefined +<td>3.16 +<tr valign=top><td><b>freshestcrl_crlissuer</b><td>undefined +<td>3.16 +<tr valign=top><td><b>orderedlist</b><td>undefined +<td>3.16 +<tr valign=top><td><b>baseupdatetime</b><td>undefined +<td>3.16 +<tr valign=top><td><b>deltainfo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>deltainfo_location</b><td>undefined +<td>3.16 +<tr valign=top><td><b>deltainfo_nextdelta</b><td>undefined +<td>3.16 +<tr valign=top><td><b>inhibitanypolicy</b><td>undefined +<td>3.16 +<tr valign=top><td><b>toberevoked</b><td>undefined +<td>3.16 +<tr valign=top><td><b>toberevoked_certissuer</b><td>undefined +<td>3.16 +<tr valign=top><td><b>toberevoked_reasoncode</b><td>undefined +<td>3.16 +<tr valign=top><td><b>toberevoked_revocationtime</b><td>undefined +<td>3.16 +<tr valign=top><td><b>toberevoked_certserialnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revokedgroups</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revokedgroups_certissuer</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revokedgroups_reasoncode</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revokedgroups_invaliditydate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revokedgroups_startingnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>revokedgroups_endingnumber</b><td>undefined +<td>3.16 +<tr valign=top><td><b>expiredcertsoncrl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdistributionpoint</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdist_fullname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdist_somereasonsonly</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdist_indirectcrl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdist_userattrcerts</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdist_aacerts</b><td>undefined +<td>3.16 +<tr valign=top><td><b>aaissuingdist_soacerts</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_certtype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_baseurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_revocationurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_carevocationurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_certrenewalurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_capolicyurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_sslservername</b><td>undefined +<td>3.16 +<tr valign=top><td><b>ns_comment</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_hashedrootkey</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_rootkeythumbprint</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_certificatetype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantdata</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_meracquirerbin</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantlanguage</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantcity</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantstateprovince</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantpostalcode</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merchantcountryname</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_mercountry</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_merauthflag</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_certcardrequired</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_tunneling</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_tunnelingflag</b><td>undefined +<td>3.16 +<tr valign=top><td><b>set_tunnelingalgid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_contenttype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_messagedigest</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingtime</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_countersignature</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingdescription</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecapabilities</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_3des</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_aes</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_cast128</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_shang</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_sha2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_sha1</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_hmac_shang</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_hmac_sha2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_hmac_sha1</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_authenc256</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_authenc128</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_rsa_shang</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_rsa_sha2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_rsa_sha1</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_dsa_sha1</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_ecdsa_shang</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_ecdsa_sha2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_ecdsa_sha1</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_prefersigneddata</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_cannotdecryptany</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_smimecap_preferbinaryinside</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_receiptrequest</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_receipt_contentidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_receipt_from</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_receipt_to</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_securitylabel</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_seclabel_policy</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_seclabel_classification</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_seclabel_privacymark</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_seclabel_cattype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_seclabel_catvalue</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_mlexpansionhistory</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_mlexp_entityidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_mlexp_time</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_mlexp_none</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_mlexp_insteadof</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_mlexp_inadditionto</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_contenthints</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_contenthint_description</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_contenthint_type</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_equivalentlabel</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_eqvlabel_policy</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_eqvlabel_classification</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_eqvlabel_privacymark</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_eqvlabel_cattype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_eqvlabel_catvalue</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingcertificate</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingcert_esscertid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingcert_policies</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingcertificatev2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingcertv2_esscertidv2</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signingcertv2_policies</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_signaturepolicyid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigpolicyid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigpolicyhash</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigpolicy_cpsuri</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigpolicy_organization</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigpolicy_noticenumbers</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigpolicy_explicittext</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigtypeidentifier</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigtypeid_originatorsig</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigtypeid_domainsig</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigtypeid_additionalattributes</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_sigtypeid_reviewsig</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_nonce</b><td>undefined +<td>3.16 +<tr valign=top><td><b>scep_messagetype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>scep_pkistatus</b><td>undefined +<td>3.16 +<tr valign=top><td><b>scep_failinfo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>scep_sendernonce</b><td>undefined +<td>3.16 +<tr valign=top><td><b>scep_recipientnonce</b><td>undefined +<td>3.16 +<tr valign=top><td><b>scep_transactionid</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcagencyinfo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcagencyurl</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcstatementtype</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcstmt_individualcodesigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcstmt_commercialcodesigning</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcopusinfo</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcopusinfo_name</b><td>undefined +<td>3.16 +<tr valign=top><td><b>cms_spcopusinfo_url</b><td>undefined +<td>3.16 +</table> +<h2><a name=CryptCert_class_object>CryptCert class object</a> +</h2> +<h2><a name=CryptCert.CURSOR_object>CryptCert.CURSOR object</a> +<br><font size=-1>Associative array of cursor constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptCert.CURSOR</tt> +<a name=CryptCert.CURSOR_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>FIRST</b><td>number +<td>Move the cursor to the first group or attribute. +<tr valign=top><td><b>PREVIOUS</b><td>number +<td>Move the cursor to the last group or attribute. +<tr valign=top><td><b>NEXT</b><td>number +<td>Move the cursor to the next group or attribute. +<tr valign=top><td><b>LAST</b><td>number +<td>Move the cursor to the previous group or attribute. +</table> +<h2><a name=CryptCert.TYPE_object>CryptCert.TYPE object</a> +<br><font size=-1>Associative array of certificate type constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptCert.TYPE</tt> +<a name=CryptCert.TYPE_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>NONE</b><td>number +<td>No certificate type +<tr valign=top><td><b>CERTIFICATE</b><td>number +<td>Certificate. +<tr valign=top><td><b>ATTRIBUTE_CERT</b><td>number +<td>Attribute certificate. +<tr valign=top><td><b>CERTCHAIN</b><td>number +<td>PKCS #7 certificate chain. +<tr valign=top><td><b>CERTREQUEST</b><td>number +<td>PKCS #10 certification request. +<tr valign=top><td><b>REQUEST_CERT</b><td>number +<td>CRMF certificate request +<tr valign=top><td><b>REQUEST_REVOCATION</b><td>number +<td>CRMF certificate revocation request +<tr valign=top><td><b>CRL</b><td>number +<td>CRL +<tr valign=top><td><b>CMS_ATTRIBUTES</b><td>number +<td>PKCS #7/CMS attributes. +<tr valign=top><td><b>RTCS_REQUEST</b><td>number +<td>RTCS request +<tr valign=top><td><b>RTCS_RESPONSE</b><td>number +<td>RTCS response +<tr valign=top><td><b>OCSP_REQUEST</b><td>number +<td>OCSP request +<tr valign=top><td><b>OCSP_RESPONSE</b><td>number +<td>OCSP response +<tr valign=top><td><b>PKIUSER</b><td>number +<td>PKI user information. +</table> +<h2><a name=CryptCert.FORMAT_object>CryptCert.FORMAT object</a> +<br><font size=-1>Associative array of certificate format constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptCert.FORMAT</tt> +<a name=CryptCert.FORMAT_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>NONE</b><td>number +<td>No certificate format +<tr valign=top><td><b>CERTIFICATE</b><td>number +<td>A certification request, certificate, or CRL in binary data format. The certificate object is encoded according to the ASN.1 distinguished encoding rules. This is the normal certificate encoding format. +<tr valign=top><td><b>CERTCHAIN</b><td>number +<td>A certificate encoded as a PKCS #7 certificate chain. +<tr valign=top><td><b>TEXT_CERTIFICATE</b><td>number +<td>As CERTIFICATE but with base64 armouring of the binary data. +<tr valign=top><td><b>TEXT_CERTCHAIN</b><td>number +<td>As CERTCHAIN but with base64 armouring of the binary data. +<tr valign=top><td><b>XML_CERTIFICATE</b><td>number +<td>XML wrapped cert +<tr valign=top><td><b>XML_CERTCHAIN</b><td>number +<td>XML wrapped certchain +</table> +<h2><a name=CryptCert.ATTR_object>CryptCert.ATTR object</a> +<br><font size=-1>Associative array of certificate attribute constants</font> +<font size=-1> - introduced in v3.18</font> +</h2> +<table border=1 width=100%> +<caption align=left><b><tt>CryptCert.ATTR</tt> +<a name=CryptCert.ATTR_object_properties> properties</a> +</b></caption> +<tr bgcolor=gray> +<th align=left width=100> +<font color="white">Name</font> +<th align=left width=100> +<font color="white">Type</font> +<th align=left> +<font color="white">Description</font> +<tr valign=top><td><b>SELFSIGNED</b><td>number +<tr valign=top><td><b>IMMUTABLE</b><td>number +<tr valign=top><td><b>XYZZY</b><td>number +<tr valign=top><td><b>CERTTYPE</b><td>number +<tr valign=top><td><b>FINGERPRINT_SHA1</b><td>number +<tr valign=top><td><b>FINGERPRINT_SHA2</b><td>number +<tr valign=top><td><b>FINGERPRINT_SHAng</b><td>number +<tr valign=top><td><b>CURRENT_CERTIFICATE</b><td>number +<tr valign=top><td><b>TRUSTED_USAGE</b><td>number +<tr valign=top><td><b>TRUSTED_IMPLICIT</b><td>number +<tr valign=top><td><b>SIGNATURELEVEL</b><td>number +<tr valign=top><td><b>VERSION</b><td>number +<tr valign=top><td><b>SERIALNUMBER</b><td>number +<tr valign=top><td><b>SUBJECTPUBLICKEYINFO</b><td>number +<tr valign=top><td><b>CERTIFICATE</b><td>number +<tr valign=top><td><b>CACERTIFICATE</b><td>number +<tr valign=top><td><b>ISSUERNAME</b><td>number +<tr valign=top><td><b>VALIDFROM</b><td>number +<tr valign=top><td><b>VALIDTO</b><td>number +<tr valign=top><td><b>SUBJECTNAME</b><td>number +<tr valign=top><td><b>ISSUERUNIQUEID</b><td>number +<tr valign=top><td><b>SUBJECTUNIQUEID</b><td>number +<tr valign=top><td><b>CERTREQUEST</b><td>number +<tr valign=top><td><b>THISUPDATE</b><td>number +<tr valign=top><td><b>NEXTUPDATE</b><td>number +<tr valign=top><td><b>REVOCATIONDATE</b><td>number +<tr valign=top><td><b>REVOCATIONSTATUS</b><td>number +<tr valign=top><td><b>CERTSTATUS</b><td>number +<tr valign=top><td><b>DN</b><td>number +<tr valign=top><td><b>PKIUSER_ID</b><td>number +<tr valign=top><td><b>PKIUSER_ISSUEPASSWORD</b><td>number +<tr valign=top><td><b>PKIUSER_REVPASSWORD</b><td>number +<tr valign=top><td><b>PKIUSER_RA</b><td>number +<tr valign=top><td><b>COUNTRYNAME</b><td>number +<tr valign=top><td><b>STATEORPROVINCENAME</b><td>number +<tr valign=top><td><b>LOCALITYNAME</b><td>number +<tr valign=top><td><b>ORGANIZATIONNAME</b><td>number +<tr valign=top><td><b>ORGANIZATIONALUNITNAME</b><td>number +<tr valign=top><td><b>COMMONNAME</b><td>number +<tr valign=top><td><b>OTHERNAME_TYPEID</b><td>number +<tr valign=top><td><b>OTHERNAME_VALUE</b><td>number +<tr valign=top><td><b>RFC822NAME</b><td>number +<tr valign=top><td><b>DNSNAME</b><td>number +<tr valign=top><td><b>DIRECTORYNAME</b><td>number +<tr valign=top><td><b>EDIPARTYNAME_NAMEASSIGNER</b><td>number +<tr valign=top><td><b>EDIPARTYNAME_PARTYNAME</b><td>number +<tr valign=top><td><b>UNIFORMRESOURCEIDENTIFIER</b><td>number +<tr valign=top><td><b>IPADDRESS</b><td>number +<tr valign=top><td><b>REGISTEREDID</b><td>number +<tr valign=top><td><b>CHALLENGEPASSWORD</b><td>number +<tr valign=top><td><b>CRLEXTREASON</b><td>number +<tr valign=top><td><b>KEYFEATURES</b><td>number +<tr valign=top><td><b>AUTHORITYINFOACCESS</b><td>number +<tr valign=top><td><b>AUTHORITYINFO_RTCS</b><td>number +<tr valign=top><td><b>AUTHORITYINFO_OCSP</b><td>number +<tr valign=top><td><b>AUTHORITYINFO_CAISSUERS</b><td>number +<tr valign=top><td><b>AUTHORITYINFO_CERTSTORE</b><td>number +<tr valign=top><td><b>AUTHORITYINFO_CRLS</b><td>number +<tr valign=top><td><b>BIOMETRICINFO</b><td>number +<tr valign=top><td><b>BIOMETRICINFO_TYPE</b><td>number +<tr valign=top><td><b>BIOMETRICINFO_HASHALGO</b><td>number +<tr valign=top><td><b>BIOMETRICINFO_HASH</b><td>number +<tr valign=top><td><b>BIOMETRICINFO_URL</b><td>number +<tr valign=top><td><b>QCSTATEMENT</b><td>number +<tr valign=top><td><b>QCSTATEMENT_SEMANTICS</b><td>number +<tr valign=top><td><b>QCSTATEMENT_REGISTRATIONAUTHORITY</b><td>number +<tr valign=top><td><b>IPADDRESSBLOCKS</b><td>number +<tr valign=top><td><b>IPADDRESSBLOCKS_ADDRESSFAMILY</b><td>number +<tr valign=top><td><b>IPADDRESSBLOCKS_PREFIX</b><td>number +<tr valign=top><td><b>IPADDRESSBLOCKS_MIN</b><td>number +<tr valign=top><td><b>IPADDRESSBLOCKS_MAX</b><td>number +<tr valign=top><td><b>AUTONOMOUSSYSIDS</b><td>number +<tr valign=top><td><b>AUTONOMOUSSYSIDS_ASNUM_ID</b><td>number +<tr valign=top><td><b>AUTONOMOUSSYSIDS_ASNUM_MIN</b><td>number +<tr valign=top><td><b>AUTONOMOUSSYSIDS_ASNUM_MAX</b><td>number +<tr valign=top><td><b>OCSP_NONCE</b><td>number +<tr valign=top><td><b>OCSP_RESPONSE</b><td>number +<tr valign=top><td><b>OCSP_RESPONSE_OCSP</b><td>number +<tr valign=top><td><b>OCSP_NOCHECK</b><td>number +<tr valign=top><td><b>OCSP_ARCHIVECUTOFF</b><td>number +<tr valign=top><td><b>SUBJECTINFOACCESS</b><td>number +<tr valign=top><td><b>SUBJECTINFO_TIMESTAMPING</b><td>number +<tr valign=top><td><b>SUBJECTINFO_CAREPOSITORY</b><td>number +<tr valign=top><td><b>SUBJECTINFO_SIGNEDOBJECTREPOSITORY</b><td>number +<tr valign=top><td><b>SUBJECTINFO_RPKIMANIFEST</b><td>number +<tr valign=top><td><b>SUBJECTINFO_SIGNEDOBJECT</b><td>number +<tr valign=top><td><b>SIGG_DATEOFCERTGEN</b><td>number +<tr valign=top><td><b>SIGG_PROCURATION</b><td>number +<tr valign=top><td><b>SIGG_PROCURE_COUNTRY</b><td>number +<tr valign=top><td><b>SIGG_PROCURE_TYPEOFSUBSTITUTION</b><td>number +<tr valign=top><td><b>SIGG_PROCURE_SIGNINGFOR</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_AUTHORITY</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_NAMINGAUTHID</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_NAMINGAUTHURL</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_NAMINGAUTHTEXT</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_PROFESSIONITEM</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_PROFESSIONOID</b><td>number +<tr valign=top><td><b>SIGG_ADMISSIONS_REGISTRATIONNUMBER</b><td>number +<tr valign=top><td><b>SIGG_MONETARYLIMIT</b><td>number +<tr valign=top><td><b>SIGG_MONETARY_CURRENCY</b><td>number +<tr valign=top><td><b>SIGG_MONETARY_AMOUNT</b><td>number +<tr valign=top><td><b>SIGG_MONETARY_EXPONENT</b><td>number +<tr valign=top><td><b>SIGG_DECLARATIONOFMAJORITY</b><td>number +<tr valign=top><td><b>SIGG_DECLARATIONOFMAJORITY_COUNTRY</b><td>number +<tr valign=top><td><b>SIGG_RESTRICTION</b><td>number +<tr valign=top><td><b>SIGG_CERTHASH</b><td>number +<tr valign=top><td><b>SIGG_ADDITIONALINFORMATION</b><td>number +<tr valign=top><td><b>STRONGEXTRANET</b><td>number +<tr valign=top><td><b>STRONGEXTRANET_ZONE</b><td>number +<tr valign=top><td><b>STRONGEXTRANET_ID</b><td>number +<tr valign=top><td><b>SUBJECTDIRECTORYATTRIBUTES</b><td>number +<tr valign=top><td><b>SUBJECTDIR_TYPE</b><td>number +<tr valign=top><td><b>SUBJECTDIR_VALUES</b><td>number +<tr valign=top><td><b>SUBJECTKEYIDENTIFIER</b><td>number +<tr valign=top><td><b>KEYUSAGE</b><td>number +<tr valign=top><td><b>PRIVATEKEYUSAGEPERIOD</b><td>number +<tr valign=top><td><b>PRIVATEKEY_NOTBEFORE</b><td>number +<tr valign=top><td><b>PRIVATEKEY_NOTAFTER</b><td>number +<tr valign=top><td><b>SUBJECTALTNAME</b><td>number +<tr valign=top><td><b>ISSUERALTNAME</b><td>number +<tr valign=top><td><b>BASICCONSTRAINTS</b><td>number +<tr valign=top><td><b>CA</b><td>number +<tr valign=top><td><b>PATHLENCONSTRAINT</b><td>number +<tr valign=top><td><b>CRLNUMBER</b><td>number +<tr valign=top><td><b>CRLREASON</b><td>number +<tr valign=top><td><b>HOLDINSTRUCTIONCODE</b><td>number +<tr valign=top><td><b>INVALIDITYDATE</b><td>number +<tr valign=top><td><b>DELTACRLINDICATOR</b><td>number +<tr valign=top><td><b>ISSUINGDISTRIBUTIONPOINT</b><td>number +<tr valign=top><td><b>ISSUINGDIST_FULLNAME</b><td>number +<tr valign=top><td><b>ISSUINGDIST_USERCERTSONLY</b><td>number +<tr valign=top><td><b>ISSUINGDIST_CACERTSONLY</b><td>number +<tr valign=top><td><b>ISSUINGDIST_SOMEREASONSONLY</b><td>number +<tr valign=top><td><b>ISSUINGDIST_INDIRECTCRL</b><td>number +<tr valign=top><td><b>CERTIFICATEISSUER</b><td>number +<tr valign=top><td><b>NAMECONSTRAINTS</b><td>number +<tr valign=top><td><b>PERMITTEDSUBTREES</b><td>number +<tr valign=top><td><b>EXCLUDEDSUBTREES</b><td>number +<tr valign=top><td><b>CRLDISTRIBUTIONPOINT</b><td>number +<tr valign=top><td><b>CRLDIST_FULLNAME</b><td>number +<tr valign=top><td><b>CRLDIST_REASONS</b><td>number +<tr valign=top><td><b>CRLDIST_CRLISSUER</b><td>number +<tr valign=top><td><b>CERTIFICATEPOLICIES</b><td>number +<tr valign=top><td><b>CERTPOLICYID</b><td>number +<tr valign=top><td><b>CERTPOLICY_CPSURI</b><td>number +<tr valign=top><td><b>CERTPOLICY_ORGANIZATION</b><td>number +<tr valign=top><td><b>CERTPOLICY_NOTICENUMBERS</b><td>number +<tr valign=top><td><b>CERTPOLICY_EXPLICITTEXT</b><td>number +<tr valign=top><td><b>POLICYMAPPINGS</b><td>number +<tr valign=top><td><b>ISSUERDOMAINPOLICY</b><td>number +<tr valign=top><td><b>SUBJECTDOMAINPOLICY</b><td>number +<tr valign=top><td><b>AUTHORITYKEYIDENTIFIER</b><td>number +<tr valign=top><td><b>AUTHORITY_KEYIDENTIFIER</b><td>number +<tr valign=top><td><b>AUTHORITY_CERTISSUER</b><td>number +<tr valign=top><td><b>AUTHORITY_CERTSERIALNUMBER</b><td>number +<tr valign=top><td><b>POLICYCONSTRAINTS</b><td>number +<tr valign=top><td><b>REQUIREEXPLICITPOLICY</b><td>number +<tr valign=top><td><b>INHIBITPOLICYMAPPING</b><td>number +<tr valign=top><td><b>EXTKEYUSAGE</b><td>number +<tr valign=top><td><b>EXTKEY_MS_INDIVIDUALCODESIGNING</b><td>number +<tr valign=top><td><b>EXTKEY_MS_COMMERCIALCODESIGNING</b><td>number +<tr valign=top><td><b>EXTKEY_MS_CERTTRUSTLISTSIGNING</b><td>number +<tr valign=top><td><b>EXTKEY_MS_TIMESTAMPSIGNING</b><td>number +<tr valign=top><td><b>EXTKEY_MS_SERVERGATEDCRYPTO</b><td>number +<tr valign=top><td><b>EXTKEY_MS_ENCRYPTEDFILESYSTEM</b><td>number +<tr valign=top><td><b>EXTKEY_SERVERAUTH</b><td>number +<tr valign=top><td><b>EXTKEY_CLIENTAUTH</b><td>number +<tr valign=top><td><b>EXTKEY_CODESIGNING</b><td>number +<tr valign=top><td><b>EXTKEY_EMAILPROTECTION</b><td>number +<tr valign=top><td><b>EXTKEY_IPSECENDSYSTEM</b><td>number +<tr valign=top><td><b>EXTKEY_IPSECTUNNEL</b><td>number +<tr valign=top><td><b>EXTKEY_IPSECUSER</b><td>number +<tr valign=top><td><b>EXTKEY_TIMESTAMPING</b><td>number +<tr valign=top><td><b>EXTKEY_OCSPSIGNING</b><td>number +<tr valign=top><td><b>EXTKEY_DIRECTORYSERVICE</b><td>number +<tr valign=top><td><b>EXTKEY_ANYKEYUSAGE</b><td>number +<tr valign=top><td><b>EXTKEY_NS_SERVERGATEDCRYPTO</b><td>number +<tr valign=top><td><b>EXTKEY_VS_SERVERGATEDCRYPTO_CA</b><td>number +<tr valign=top><td><b>CRLSTREAMIDENTIFIER</b><td>number +<tr valign=top><td><b>FRESHESTCRL</b><td>number +<tr valign=top><td><b>FRESHESTCRL_FULLNAME</b><td>number +<tr valign=top><td><b>FRESHESTCRL_REASONS</b><td>number +<tr valign=top><td><b>FRESHESTCRL_CRLISSUER</b><td>number +<tr valign=top><td><b>ORDEREDLIST</b><td>number +<tr valign=top><td><b>BASEUPDATETIME</b><td>number +<tr valign=top><td><b>DELTAINFO</b><td>number +<tr valign=top><td><b>DELTAINFO_LOCATION</b><td>number +<tr valign=top><td><b>DELTAINFO_NEXTDELTA</b><td>number +<tr valign=top><td><b>INHIBITANYPOLICY</b><td>number +<tr valign=top><td><b>TOBEREVOKED</b><td>number +<tr valign=top><td><b>TOBEREVOKED_CERTISSUER</b><td>number +<tr valign=top><td><b>TOBEREVOKED_REASONCODE</b><td>number +<tr valign=top><td><b>TOBEREVOKED_REVOCATIONTIME</b><td>number +<tr valign=top><td><b>TOBEREVOKED_CERTSERIALNUMBER</b><td>number +<tr valign=top><td><b>REVOKEDGROUPS</b><td>number +<tr valign=top><td><b>REVOKEDGROUPS_CERTISSUER</b><td>number +<tr valign=top><td><b>REVOKEDGROUPS_REASONCODE</b><td>number +<tr valign=top><td><b>REVOKEDGROUPS_INVALIDITYDATE</b><td>number +<tr valign=top><td><b>REVOKEDGROUPS_STARTINGNUMBER</b><td>number +<tr valign=top><td><b>REVOKEDGROUPS_ENDINGNUMBER</b><td>number +<tr valign=top><td><b>EXPIREDCERTSONCRL</b><td>number +<tr valign=top><td><b>AAISSUINGDISTRIBUTIONPOINT</b><td>number +<tr valign=top><td><b>AAISSUINGDIST_FULLNAME</b><td>number +<tr valign=top><td><b>AAISSUINGDIST_SOMEREASONSONLY</b><td>number +<tr valign=top><td><b>AAISSUINGDIST_INDIRECTCRL</b><td>number +<tr valign=top><td><b>AAISSUINGDIST_USERATTRCERTS</b><td>number +<tr valign=top><td><b>AAISSUINGDIST_AACERTS</b><td>number +<tr valign=top><td><b>AAISSUINGDIST_SOACERTS</b><td>number +<tr valign=top><td><b>NS_CERTTYPE</b><td>number +<tr valign=top><td><b>NS_BASEURL</b><td>number +<tr valign=top><td><b>NS_REVOCATIONURL</b><td>number +<tr valign=top><td><b>NS_CAREVOCATIONURL</b><td>number +<tr valign=top><td><b>NS_CERTRENEWALURL</b><td>number +<tr valign=top><td><b>NS_CAPOLICYURL</b><td>number +<tr valign=top><td><b>NS_SSLSERVERNAME</b><td>number +<tr valign=top><td><b>NS_COMMENT</b><td>number +<tr valign=top><td><b>SET_HASHEDROOTKEY</b><td>number +<tr valign=top><td><b>SET_ROOTKEYTHUMBPRINT</b><td>number +<tr valign=top><td><b>SET_CERTIFICATETYPE</b><td>number +<tr valign=top><td><b>SET_MERCHANTDATA</b><td>number +<tr valign=top><td><b>SET_MERID</b><td>number +<tr valign=top><td><b>SET_MERACQUIRERBIN</b><td>number +<tr valign=top><td><b>SET_MERCHANTLANGUAGE</b><td>number +<tr valign=top><td><b>SET_MERCHANTNAME</b><td>number +<tr valign=top><td><b>SET_MERCHANTCITY</b><td>number +<tr valign=top><td><b>SET_MERCHANTSTATEPROVINCE</b><td>number +<tr valign=top><td><b>SET_MERCHANTPOSTALCODE</b><td>number +<tr valign=top><td><b>SET_MERCHANTCOUNTRYNAME</b><td>number +<tr valign=top><td><b>SET_MERCOUNTRY</b><td>number +<tr valign=top><td><b>SET_MERAUTHFLAG</b><td>number +<tr valign=top><td><b>SET_CERTCARDREQUIRED</b><td>number +<tr valign=top><td><b>SET_TUNNELING</b><td>number +<tr valign=top><td><b>SET_TUNNELINGFLAG</b><td>number +<tr valign=top><td><b>SET_TUNNELINGALGID</b><td>number +<tr valign=top><td><b>CMS_CONTENTTYPE</b><td>number +<tr valign=top><td><b>CMS_MESSAGEDIGEST</b><td>number +<tr valign=top><td><b>CMS_SIGNINGTIME</b><td>number +<tr valign=top><td><b>CMS_COUNTERSIGNATURE</b><td>number +<tr valign=top><td><b>CMS_SIGNINGDESCRIPTION</b><td>number +<tr valign=top><td><b>CMS_SMIMECAPABILITIES</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_3DES</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_AES</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_CAST128</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_SHAng</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_SHA2</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_SHA1</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_HMAC_SHAng</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_HMAC_SHA2</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_HMAC_SHA1</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_AUTHENC256</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_AUTHENC128</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_RSA_SHAng</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_RSA_SHA2</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_RSA_SHA1</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_DSA_SHA1</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_ECDSA_SHAng</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_ECDSA_SHA2</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_ECDSA_SHA1</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_PREFERSIGNEDDATA</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_CANNOTDECRYPTANY</b><td>number +<tr valign=top><td><b>CMS_SMIMECAP_PREFERBINARYINSIDE</b><td>number +<tr valign=top><td><b>CMS_RECEIPTREQUEST</b><td>number +<tr valign=top><td><b>CMS_RECEIPT_CONTENTIDENTIFIER</b><td>number +<tr valign=top><td><b>CMS_RECEIPT_FROM</b><td>number +<tr valign=top><td><b>CMS_RECEIPT_TO</b><td>number +<tr valign=top><td><b>CMS_SECURITYLABEL</b><td>number +<tr valign=top><td><b>CMS_SECLABEL_POLICY</b><td>number +<tr valign=top><td><b>CMS_SECLABEL_CLASSIFICATION</b><td>number +<tr valign=top><td><b>CMS_SECLABEL_PRIVACYMARK</b><td>number +<tr valign=top><td><b>CMS_SECLABEL_CATTYPE</b><td>number +<tr valign=top><td><b>CMS_SECLABEL_CATVALUE</b><td>number +<tr valign=top><td><b>CMS_MLEXPANSIONHISTORY</b><td>number +<tr valign=top><td><b>CMS_MLEXP_ENTITYIDENTIFIER</b><td>number +<tr valign=top><td><b>CMS_MLEXP_TIME</b><td>number +<tr valign=top><td><b>CMS_MLEXP_NONE</b><td>number +<tr valign=top><td><b>CMS_MLEXP_INSTEADOF</b><td>number +<tr valign=top><td><b>CMS_MLEXP_INADDITIONTO</b><td>number +<tr valign=top><td><b>CMS_CONTENTHINTS</b><td>number +<tr valign=top><td><b>CMS_CONTENTHINT_DESCRIPTION</b><td>number +<tr valign=top><td><b>CMS_CONTENTHINT_TYPE</b><td>number +<tr valign=top><td><b>CMS_EQUIVALENTLABEL</b><td>number +<tr valign=top><td><b>CMS_EQVLABEL_POLICY</b><td>number +<tr valign=top><td><b>CMS_EQVLABEL_CLASSIFICATION</b><td>number +<tr valign=top><td><b>CMS_EQVLABEL_PRIVACYMARK</b><td>number +<tr valign=top><td><b>CMS_EQVLABEL_CATTYPE</b><td>number +<tr valign=top><td><b>CMS_EQVLABEL_CATVALUE</b><td>number +<tr valign=top><td><b>CMS_SIGNINGCERTIFICATE</b><td>number +<tr valign=top><td><b>CMS_SIGNINGCERT_ESSCERTID</b><td>number +<tr valign=top><td><b>CMS_SIGNINGCERT_POLICIES</b><td>number +<tr valign=top><td><b>CMS_SIGNINGCERTIFICATEV2</b><td>number +<tr valign=top><td><b>CMS_SIGNINGCERTV2_ESSCERTIDV2</b><td>number +<tr valign=top><td><b>CMS_SIGNINGCERTV2_POLICIES</b><td>number +<tr valign=top><td><b>CMS_SIGNATUREPOLICYID</b><td>number +<tr valign=top><td><b>CMS_SIGPOLICYID</b><td>number +<tr valign=top><td><b>CMS_SIGPOLICYHASH</b><td>number +<tr valign=top><td><b>CMS_SIGPOLICY_CPSURI</b><td>number +<tr valign=top><td><b>CMS_SIGPOLICY_ORGANIZATION</b><td>number +<tr valign=top><td><b>CMS_SIGPOLICY_NOTICENUMBERS</b><td>number +<tr valign=top><td><b>CMS_SIGPOLICY_EXPLICITTEXT</b><td>number +<tr valign=top><td><b>CMS_SIGTYPEIDENTIFIER</b><td>number +<tr valign=top><td><b>CMS_SIGTYPEID_ORIGINATORSIG</b><td>number +<tr valign=top><td><b>CMS_SIGTYPEID_DOMAINSIG</b><td>number +<tr valign=top><td><b>CMS_SIGTYPEID_ADDITIONALATTRIBUTES</b><td>number +<tr valign=top><td><b>CMS_SIGTYPEID_REVIEWSIG</b><td>number +<tr valign=top><td><b>CMS_NONCE</b><td>number +<tr valign=top><td><b>SCEP_MESSAGETYPE</b><td>number +<tr valign=top><td><b>SCEP_PKISTATUS</b><td>number +<tr valign=top><td><b>SCEP_FAILINFO</b><td>number +<tr valign=top><td><b>SCEP_SENDERNONCE</b><td>number +<tr valign=top><td><b>SCEP_RECIPIENTNONCE</b><td>number +<tr valign=top><td><b>SCEP_TRANSACTIONID</b><td>number +<tr valign=top><td><b>CMS_SPCAGENCYINFO</b><td>number +<tr valign=top><td><b>CMS_SPCAGENCYURL</b><td>number +<tr valign=top><td><b>CMS_SPCSTATEMENTTYPE</b><td>number +<tr valign=top><td><b>CMS_SPCSTMT_INDIVIDUALCODESIGNING</b><td>number +<tr valign=top><td><b>CMS_SPCSTMT_COMMERCIALCODESIGNING</b><td>number +<tr valign=top><td><b>CMS_SPCOPUSINFO</b><td>number +<tr valign=top><td><b>CMS_SPCOPUSINFO_NAME</b><td>number +<tr valign=top><td><b>CMS_SPCOPUSINFO_URL</b><td>number +</table> <p><small> -Totals: 625 properties, 400 methods +Totals: 1378 properties, 462 methods