|
|
1.1 ! root 1: /* cmdshell.h */ ! 2: ! 3: /* Synchronet command shell/module constants and structure definitions */ ! 4: ! 5: /* $Id: cmdshell.h,v 1.7 2003/10/09 17:27:05 deuce Exp $ */ ! 6: ! 7: /**************************************************************************** ! 8: * @format.tab-size 4 (Plain Text/Source Code File Header) * ! 9: * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * ! 10: * * ! 11: * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html * ! 12: * * ! 13: * This program is free software; you can redistribute it and/or * ! 14: * modify it under the terms of the GNU General Public License * ! 15: * as published by the Free Software Foundation; either version 2 * ! 16: * of the License, or (at your option) any later version. * ! 17: * See the GNU General Public License for more details: gpl.txt or * ! 18: * http://www.fsf.org/copyleft/gpl.html * ! 19: * * ! 20: * Anonymous FTP access to the most recent released source is available at * ! 21: * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * ! 22: * * ! 23: * Anonymous CVS access to the development source and modification history * ! 24: * is available at cvs.synchro.net:/cvsroot/sbbs, example: * ! 25: * cvs -d :pserver:[email protected]:/cvsroot/sbbs login * ! 26: * (just hit return, no password is necessary) * ! 27: * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src * ! 28: * * ! 29: * For Synchronet coding style and modification guidelines, see * ! 30: * http://www.synchro.net/source.html * ! 31: * * ! 32: * You are encouraged to submit any modifications (preferably in Unix diff * ! 33: * format) via e-mail to [email protected] * ! 34: * * ! 35: * Note: If this box doesn't appear square, then you need to fix your tabs. * ! 36: ****************************************************************************/ ! 37: ! 38: #include "gen_defs.h" ! 39: ! 40: #ifndef _CMDSHELL_H_ ! 41: #define _CMDSHELL_H_ ! 42: ! 43: /******************************/ ! 44: /* Instructions and Functions */ ! 45: /******************************/ ! 46: enum { ! 47: ! 48: /* Single byte instructions */ ! 49: ! 50: CS_IF_TRUE=0 /* Same as IF_EQUAL */ ! 51: ,CS_IF_FALSE /* Same as IF_NOT_EQUAL */ ! 52: ,CS_ELSE ! 53: ,CS_ENDIF ! 54: ,CS_CMD_HOME ! 55: ,CS_CMD_POP ! 56: ,CS_END_CMD ! 57: ,CS_RETURN ! 58: ,CS_GETKEY ! 59: ,CS_GETKEYE ! 60: ,CS_UNGETKEY ! 61: ,CS_UNGETSTR ! 62: ,CS_PRINTKEY ! 63: ,CS_PRINTSTR ! 64: ,CS_HANGUP ! 65: ,CS_SYNC ! 66: ,CS_ASYNC ! 67: ,CS_CHKSYSPASS ! 68: ,CS_LOGKEY ! 69: ,CS_LOGKEY_COMMA ! 70: ,CS_LOGSTR ! 71: ,CS_CLS ! 72: ,CS_CRLF ! 73: ,CS_PAUSE ! 74: ,CS_PAUSE_RESET ! 75: ,CS_GETLINES ! 76: ,CS_GETFILESPEC ! 77: ,CS_FINDUSER ! 78: ,CS_CLEAR_ABORT ! 79: ,CS_SELECT_SHELL ! 80: ,CS_SET_SHELL ! 81: ,CS_SELECT_EDITOR ! 82: ,CS_SET_EDITOR /* 0x20 */ ! 83: ,CS_INKEY ! 84: ,CS_INCHAR /* Was RIOSYNC (now deprecated) 02/18/01 */ ! 85: ,CS_GETTIMELEFT ! 86: ,CS_SAVELINE ! 87: ,CS_RESTORELINE ! 88: ,CS_IF_GREATER ! 89: ,CS_IF_GREATER_OR_EQUAL ! 90: ,CS_IF_LESS ! 91: ,CS_IF_LESS_OR_EQUAL ! 92: ,CS_DEFAULT /* 0x2a */ ! 93: ,CS_END_SWITCH ! 94: ,CS_END_CASE ! 95: ,CS_PUT_NODE ! 96: ,CS_GETCHAR ! 97: ,CS_ONE_MORE_BYTE=0x2f ! 98: ! 99: /* Two byte instructions */ ! 100: ! 101: ,CS_CMDKEY=0x30 ! 102: ,CS_NODE_ACTION ! 103: ,CS_GETSTR ! 104: ,CS_GETNAME ! 105: ,CS_GETSTRUPR ! 106: ,CS_SHIFT_STR ! 107: ,CS_COMPARE_KEY ! 108: ,CS_SETLOGIC ! 109: ,CS_SET_USER_LEVEL ! 110: ,CS_SET_USER_STRING ! 111: ,CS_GETLINE /* 0x3a */ ! 112: ,CS_NODE_STATUS ! 113: ,CS_CMDCHAR ! 114: ,CS_COMPARE_CHAR ! 115: ,CS_MULTINODE_CHAT ! 116: ,CS_TWO_MORE_BYTES=0x3f ! 117: ! 118: /* Three byte instructions */ ! 119: ! 120: ,CS_GOTO=0x40 ! 121: ,CS_CALL ! 122: ,CS_TOGGLE_NODE_MISC ! 123: ,CS_ADJUST_USER_CREDITS ! 124: ,CS_TOGGLE_USER_FLAG ! 125: ,CS_GETNUM ! 126: ,CS_COMPARE_NODE_MISC ! 127: ,CS_MSWAIT ! 128: ,CS_ADJUST_USER_MINUTES ! 129: ,CS_REVERT_TEXT ! 130: ,CS_THREE_MORE_BYTES=0x4f ! 131: ! 132: /* String arg instructions */ ! 133: ! 134: ,CS_MENU=0x50 ! 135: ,CS_PRINT ! 136: ,CS_PRINT_LOCAL ! 137: ,CS_PRINT_REMOTE ! 138: ,CS_PRINTFILE ! 139: ,CS_PRINTFILE_LOCAL ! 140: ,CS_PRINTFILE_REMOTE ! 141: ,CS_YES_NO ! 142: ,CS_NO_YES ! 143: ,CS_COMPARE_STR ! 144: ,CS_COMPARE_WORD /* 0x5a */ ! 145: ,CS_EXEC ! 146: ,CS_EXEC_INT ! 147: ,CS_EXEC_BIN ! 148: ,CS_EXEC_XTRN ! 149: ,CS_GETCMD ! 150: ,CS_LOG /* 0x60 */ ! 151: ,CS_MNEMONICS ! 152: ,CS_SETSTR ! 153: ,CS_SET_MENU_DIR ! 154: ,CS_SET_MENU_FILE ! 155: ,CS_CMDSTR ! 156: ,CS_CHKFILE ! 157: ,CS_GET_TEMPLATE ! 158: ,CS_TRASHCAN ! 159: ,CS_CREATE_SIF ! 160: ,CS_READ_SIF /* 0x6a */ ! 161: ,CS_CMDKEYS ! 162: ,CS_COMPARE_KEYS ! 163: ,CS_STR_FUNCTION=0x6f ! 164: ! 165: /* Var length instructions */ ! 166: ! 167: ,CS_COMPARE_ARS=0x70 ! 168: ,CS_TOGGLE_USER_MISC ! 169: ,CS_COMPARE_USER_MISC ! 170: ,CS_REPLACE_TEXT ! 171: ,CS_TOGGLE_USER_CHAT ! 172: ,CS_COMPARE_USER_CHAT ! 173: ,CS_TOGGLE_USER_QWK ! 174: ,CS_COMPARE_USER_QWK ! 175: ,CS_SWITCH ! 176: ,CS_CASE ! 177: ,CS_USE_INT_VAR /* 0x7a */ ! 178: ! 179: /* Network (TCP/IP) Functions */ ! 180: ! 181: ,CS_NET_FUNCTION=0x7d ! 182: ! 183: /* File I/O Functions */ ! 184: ! 185: ,CS_FIO_FUNCTION=0x7e ! 186: ! 187: /* Variable instruction sub-ops */ ! 188: ! 189: ,CS_VAR_INSTRUCTION=0x7f ! 190: ! 191: /* Functions */ ! 192: ! 193: ,CS_MAIL_READ=0x80 ! 194: ,CS_MAIL_READ_SENT ! 195: ,CS_MAIL_READ_ALL ! 196: ,CS_MAIL_SEND ! 197: ,CS_MAIL_SEND_BULK ! 198: ,CS_MAIL_SEND_FILE ! 199: ,CS_MAIL_SEND_FEEDBACK ! 200: ,CS_MAIL_SEND_NETMAIL ! 201: ,CS_MAIL_SEND_NETFILE ! 202: ,CS_LOGOFF ! 203: ,CS_LOGOFF_FAST ! 204: ,CS_AUTO_MESSAGE ! 205: ,CS_MSG_SET_AREA ! 206: ,CS_MSG_SELECT_AREA ! 207: ,CS_MSG_SHOW_GROUPS ! 208: ,CS_MSG_SHOW_SUBBOARDS ! 209: ,CS_MSG_GROUP_UP /* 0x90 */ ! 210: ,CS_MSG_GROUP_DOWN ! 211: ,CS_MSG_SUBBOARD_UP ! 212: ,CS_MSG_SUBBOARD_DOWN ! 213: ,CS_MSG_GET_SUB_NUM ! 214: ,CS_MSG_GET_GRP_NUM ! 215: ,CS_MSG_READ ! 216: ,CS_MSG_POST ! 217: ,CS_MSG_QWK ! 218: ,CS_MSG_PTRS_CFG ! 219: ,CS_MSG_PTRS_REINIT ! 220: ,CS_MSG_NEW_SCAN_CFG ! 221: ,CS_MSG_NEW_SCAN ! 222: ,CS_MSG_NEW_SCAN_ALL ! 223: ,CS_MSG_CONT_SCAN ! 224: ,CS_MSG_CONT_SCAN_ALL ! 225: ,CS_MSG_BROWSE_SCAN /* 0xA0 */ ! 226: ,CS_MSG_BROWSE_SCAN_ALL ! 227: ,CS_MSG_FIND_TEXT ! 228: ,CS_MSG_FIND_TEXT_ALL ! 229: ,CS_MSG_YOUR_SCAN_CFG ! 230: ,CS_MSG_YOUR_SCAN ! 231: ,CS_MSG_YOUR_SCAN_ALL ! 232: ,CS_MSG_NEW_SCAN_SUB ! 233: ,CS_MSG_SET_GROUP ! 234: ,CS_MSG_UNUSED4 ! 235: ,CS_MSG_UNUSED3 ! 236: ,CS_MSG_UNUSED2 ! 237: ,CS_MSG_UNUSED1 ! 238: ,CS_FILE_SET_AREA ! 239: ,CS_FILE_SELECT_AREA ! 240: ,CS_FILE_SHOW_LIBRARIES ! 241: ,CS_FILE_SHOW_DIRECTORIES /* 0xB0 */ ! 242: ,CS_FILE_LIBRARY_UP ! 243: ,CS_FILE_LIBRARY_DOWN ! 244: ,CS_FILE_DIRECTORY_UP ! 245: ,CS_FILE_DIRECTORY_DOWN ! 246: ,CS_FILE_GET_DIR_NUM ! 247: ,CS_FILE_GET_LIB_NUM ! 248: ,CS_FILE_LIST ! 249: ,CS_FILE_LIST_EXTENDED ! 250: ,CS_FILE_VIEW ! 251: ,CS_FILE_UPLOAD ! 252: ,CS_FILE_UPLOAD_USER ! 253: ,CS_FILE_UPLOAD_SYSOP ! 254: ,CS_FILE_DOWNLOAD ! 255: ,CS_FILE_DOWNLOAD_USER ! 256: ,CS_FILE_DOWNLOAD_BATCH ! 257: ,CS_FILE_REMOVE /* 0xC0 */ ! 258: ,CS_FILE_BATCH_SECTION ! 259: ,CS_FILE_TEMP_SECTION ! 260: ,CS_FILE_NEW_SCAN_CFG ! 261: ,CS_FILE_NEW_SCAN ! 262: ,CS_FILE_NEW_SCAN_ALL ! 263: ,CS_FILE_FIND_TEXT ! 264: ,CS_FILE_FIND_TEXT_ALL ! 265: ,CS_FILE_FIND_NAME ! 266: ,CS_FILE_FIND_NAME_ALL ! 267: ,CS_FILE_PTRS_CFG ! 268: ,CS_FILE_BATCH_ADD ! 269: ,CS_FILE_BATCH_CLEAR ! 270: ,CS_FILE_SET_LIBRARY ! 271: ,CS_FILE_SEND /* Like file_get, but no password needed */ ! 272: ,CS_FILE_BATCH_ADD_LIST ! 273: ,CS_FILE_RECEIVE /* 0xD0 */ ! 274: ,CS_NODELIST_ALL ! 275: ,CS_NODELIST_USERS ! 276: ,CS_CHAT_SECTION ! 277: ,CS_USER_DEFAULTS ! 278: ,CS_USER_EDIT ! 279: ,CS_TEXT_FILE_SECTION ! 280: ,CS_INFO_SYSTEM ! 281: ,CS_INFO_SUBBOARD ! 282: ,CS_INFO_DIRECTORY ! 283: ,CS_INFO_USER ! 284: ,CS_INFO_VERSION ! 285: ,CS_INFO_XFER_POLICY ! 286: ,CS_XTRN_EXEC ! 287: ,CS_XTRN_SECTION ! 288: ,CS_USERLIST_SUB ! 289: ,CS_USERLIST_DIR /* 0xE0 */ ! 290: ,CS_USERLIST_ALL ! 291: ,CS_USERLIST_LOGONS ! 292: ,CS_PAGE_SYSOP ! 293: ,CS_PRIVATE_CHAT ! 294: ,CS_PRIVATE_MESSAGE ! 295: ,CS_MINUTE_BANK ! 296: ,CS_GURU_LOG ! 297: ,CS_ERROR_LOG ! 298: ,CS_SYSTEM_LOG ! 299: ,CS_SYSTEM_YLOG ! 300: ,CS_SYSTEM_STATS ! 301: ,CS_NODE_STATS ! 302: ,CS_SHOW_MEM ! 303: ,CS_CHANGE_USER ! 304: ,CS_ANSI_CAPTURE ! 305: ,CS_LIST_TEXT_FILE /* 0xF0 */ ! 306: ,CS_EDIT_TEXT_FILE ! 307: ,CS_FILE_SET_ALT_PATH ! 308: ,CS_FILE_RESORT_DIRECTORY ! 309: ,CS_FILE_GET ! 310: ,CS_FILE_PUT ! 311: ,CS_FILE_UPLOAD_BULK ! 312: ,CS_FILE_FIND_OLD ! 313: ,CS_FILE_FIND_OPEN ! 314: ,CS_FILE_FIND_OFFLINE ! 315: ,CS_FILE_FIND_OLD_UPLOADS ! 316: ,CS_INC_MAIN_CMDS ! 317: ,CS_INC_FILE_CMDS ! 318: ,CS_PRINTFILE_STR ! 319: ,CS_PAGE_GURU ! 320: ,CS_SPY /* 0xFF */ ! 321: ! 322: }; ! 323: ! 324: /* Variable instructions (sub-op-code) */ ! 325: ! 326: /* Preceeded by CS_VAR_INSTRUCTION */ ! 327: ! 328: enum { ! 329: ! 330: SHOW_VARS /* Show all variables */ ! 331: ,PRINT_VAR /* Print a single variable */ ! 332: ,VAR_PRINTF /* Print a formated line of text */ ! 333: ,VAR_PRINTF_LOCAL /* Print a formated line of text to local display */ ! 334: ,VAR_RESERVED_3 ! 335: ,VAR_RESERVED_2 ! 336: ,VAR_RESERVED_1 ! 337: ,DEFINE_STR_VAR /* Define Local Variable */ ! 338: ,DEFINE_INT_VAR ! 339: ,VAR_RESERVED_A4 ! 340: ,VAR_RESERVED_A3 ! 341: ,VAR_RESERVED_A2 ! 342: ,VAR_RESERVED_A1 ! 343: ,DEFINE_GLOBAL_STR_VAR /* Define Global Variable */ ! 344: ,DEFINE_GLOBAL_INT_VAR ! 345: ,VAR_RESERVED_B4 ! 346: ,VAR_RESERVED_B3 /* 0x10 */ ! 347: ,VAR_RESERVED_B2 ! 348: ,VAR_RESERVED_B1 ! 349: ,SET_STR_VAR /* Set string variable */ ! 350: ,SET_INT_VAR /* Set integer variable */ ! 351: ,VAR_RESERVED_C4 ! 352: ,VAR_RESERVED_C3 ! 353: ,VAR_RESERVED_C2 ! 354: ,VAR_RESERVED_C1 ! 355: ,COMPARE_STR_VAR /* Compare string variable (static) */ ! 356: ,COMPARE_INT_VAR /* Compare integer variable (static) */ ! 357: ,STRNCMP_VAR /* Compare n chars of str var (static) */ ! 358: ,STRSTR_VAR /* Sub-string compare of str var (static) */ ! 359: ,VAR_RESERVED_D2 ! 360: ,VAR_RESERVED_D1 ! 361: ,COMPARE_VARS /* Compare two variables */ ! 362: ,STRNCMP_VARS /* 0x20 // Compare n chars of str vars (dynamic) */ ! 363: ,STRSTR_VARS /* Sub-string compare between two str vars */ ! 364: ,VAR_RESERVED_E2 ! 365: ,VAR_RESERVED_E1 ! 366: ,COPY_VAR /* Copy from one variable to another */ ! 367: ,VAR_RESERVED_F4 ! 368: ,VAR_RESERVED_F3 ! 369: ,VAR_RESERVED_F2 ! 370: ,VAR_RESERVED_F1 ! 371: ,SWAP_VARS /* Swap two variables */ ! 372: ,VAR_RESERVED_G4 ! 373: ,VAR_RESERVED_G3 ! 374: ,VAR_RESERVED_G2 ! 375: ,VAR_RESERVED_G1 ! 376: ,CAT_STR_VAR /* Concatenate string variable (static) */ ! 377: ,CAT_STR_VARS /* Concatenate strint variable (dynamic) */ ! 378: ,FORMAT_STR_VAR /* 0x30 // Format string variable */ ! 379: ,TIME_STR /* Write formated date/time to string */ ! 380: ,DATE_STR /* Write MM/DD/YY to string */ ! 381: ,FORMAT_TIME_STR /* Create custom date/time string */ ! 382: ,SECOND_STR /* Create a string in format hh:mm:ss */ ! 383: ,STRUPR_VAR /* Convert string to upper case */ ! 384: ,STRLWR_VAR /* Convert string to lower case */ ! 385: ,ADD_INT_VAR /* Add to int variable (static) */ ! 386: ,ADD_INT_VARS /* Add to int variable (dynamic) */ ! 387: ,VAR_RESERVED_I4 ! 388: ,VAR_RESERVED_I3 ! 389: ,VAR_RESERVED_I2 ! 390: ,VAR_RESERVED_I1 ! 391: ,SUB_INT_VAR /* Subtract from int variable (static) */ ! 392: ,SUB_INT_VARS /* Subtract from int variable (dynamic) */ ! 393: ,VAR_RESERVED_J4 ! 394: ,VAR_RESERVED_J3 /* 0x40 */ ! 395: ,VAR_RESERVED_J2 ! 396: ,VAR_RESERVED_J1 ! 397: ,MUL_INT_VAR /* Multiply int variable (static) */ ! 398: ,MUL_INT_VARS /* Multiply int variable (dynamic) */ ! 399: ,VAR_RESERVED_K4 ! 400: ,VAR_RESERVED_K3 ! 401: ,VAR_RESERVED_K2 ! 402: ,VAR_RESERVED_K1 ! 403: ,DIV_INT_VAR /* Divide int variable (static) */ ! 404: ,DIV_INT_VARS /* Divide int variable (dynamic) */ ! 405: ,MOD_INT_VAR ! 406: ,MOD_INT_VARS ! 407: ,VAR_RESERVED_L2 ! 408: ,VAR_RESERVED_L1 ! 409: ,AND_INT_VAR /* Bit-wise AND int variable (static) */ ! 410: ,AND_INT_VARS /* 0x50 // Bit-wise AND int variable (dynamic) */ ! 411: ,COMPARE_ANY_BITS ! 412: ,COMPARE_ALL_BITS ! 413: ,VAR_RESERVED_M2 ! 414: ,VAR_RESERVED_M1 ! 415: ,OR_INT_VAR /* Bit-wise OR int variable (static) */ ! 416: ,OR_INT_VARS /* Bit-wise OR int variable (dynamic) */ ! 417: ,VAR_RESERVED_N4 ! 418: ,VAR_RESERVED_N3 ! 419: ,VAR_RESERVED_N2 ! 420: ,VAR_RESERVED_N1 ! 421: ,NOT_INT_VAR /* Bit-wise NOT int variable (static) */ ! 422: ,NOT_INT_VARS /* Bit-wise NOT int variable (dynamic) */ ! 423: ,VAR_RESERVED_O4 ! 424: ,VAR_RESERVED_O3 ! 425: ,VAR_RESERVED_O2 ! 426: ,VAR_RESERVED_O1 /* 0x60 */ ! 427: ,XOR_INT_VAR /* XOR int variable (static) */ ! 428: ,XOR_INT_VARS /* XOR int variable (dynamic) */ ! 429: ,VAR_RESERVED_P4 ! 430: ,VAR_RESERVED_P3 ! 431: ,VAR_RESERVED_P2 ! 432: ,VAR_RESERVED_P1 ! 433: ,RANDOM_INT_VAR /* Set integer to random number */ ! 434: ,TIME_INT_VAR /* Set integer to current time/date */ ! 435: ,DATE_STR_TO_INT /* Convert a date string to integer */ ! 436: ,STRLEN_INT_VAR /* Set integer to length of str */ ! 437: ,CRC16_TO_INT /* Get CRC-16 of str var */ ! 438: ,CRC32_TO_INT /* Get CRC-32 of str var */ ! 439: ,FLENGTH_TO_INT /* Put length of str var file into int */ ! 440: ,CHARVAL_TO_INT /* Put character val of str var into int */ ! 441: ,GETNUM_VAR /* Get number */ ! 442: ,GETSTR_VAR /* 0x70 // Get string */ ! 443: ,GETNAME_VAR /* Get string (upper/lower) */ ! 444: ,GETSTRUPR_VAR /* Get string (upper) */ ! 445: ,GETLINE_VAR /* Get string (input bar/line) */ ! 446: ,SHIFT_STR_VAR /* Shift str in variable */ ! 447: ,GETSTR_MODE /* Get string with various modes */ ! 448: ,TRUNCSP_STR_VAR /* Truncate space off end of str var */ ! 449: ,CHKFILE_VAR ! 450: ,PRINTFILE_VAR_MODE /* Printfile str var with mode */ ! 451: ,PRINTTAIL_VAR_MODE /* Print tail-end of str var with mode */ ! 452: ,CHKSUM_TO_INT /* Get CHKSUM of str var */ ! 453: ,STRIP_CTRL_STR_VAR /* Strip ctrl chars from str var */ ! 454: ,SEND_FILE_VIA /* Send file (static) via protocol */ ! 455: ,SEND_FILE_VIA_VAR /* Send file (dynamic) via protocol */ ! 456: ,FTIME_TO_INT /* Put time of str var file into int */ ! 457: ,RECEIVE_FILE_VIA /* Receive file (static) via protocol */ ! 458: ,RECEIVE_FILE_VIA_VAR /* 0x80 // Receive file (dynamic) via protocol */ ! 459: ,TELNET_GATE_STR /* Run telnet gateway to static address with mode */ ! 460: ,TELNET_GATE_VAR /* Run telnet gateway to variable address with mode */ ! 461: ,COPY_FIRST_CHAR /* Copy first char of str var to int var */ ! 462: ,COMPARE_FIRST_CHAR /* Compare first char of str var to static char */ ! 463: ,COPY_CHAR /* Copy cmdkey to int var or str var */ ! 464: ,SHIFT_TO_FIRST_CHAR /* Shift str var to first occurance of static char */ ! 465: ,SHIFT_TO_LAST_CHAR /* Shift str var to last occurance of static char */ ! 466: ,MATCHUSER /* Set int var to user number of user name (str var) */ ! 467: }; ! 468: ! 469: /* Preceeded by CS_STR_FUNCTION */ ! 470: ! 471: enum { /* More string arg functions */ ! 472: CS_LOGIN /* Login/password prompt */ ! 473: ,CS_LOAD_TEXT /* Load alternative TEXT.DAT */ ! 474: }; ! 475: ! 476: /* Preceeded by CS_ONE_MORE_BYTE */ ! 477: enum { /* More single byte instructions */ ! 478: CS_ONLINE /* Online execution only */ ! 479: ,CS_OFFLINE /* Offline execution allowed */ ! 480: ,CS_NEWUSER /* New user procedure */ ! 481: ,CS_LOGON /* Logon procedure */ ! 482: ,CS_LOGOUT /* Logout procedure */ ! 483: ,CS_EXIT /* Exit current module immediately */ ! 484: ,CS_LOOP_BEGIN /* Looping anchor */ ! 485: ,CS_CONTINUE_LOOP /* "next" loop */ ! 486: ,CS_BREAK_LOOP /* Stop executing loop */ ! 487: ,CS_END_LOOP /* End of looping code block */ ! 488: }; ! 489: ! 490: /* Preceeded by CS_TWO_MORE_BYTES */ ! 491: enum { /* More two byte instructions */ ! 492: CS_USER_EVENT /* External user event */ ! 493: }; ! 494: ! 495: /* Preceeded by CS_NET_FUNCTION */ ! 496: ! 497: enum { ! 498: CS_SOCKET_OPEN /* Open a socket */ ! 499: ,CS_SOCKET_CLOSE /* Close a socket */ ! 500: ,CS_SOCKET_CONNECT /* Outbound connection */ ! 501: ,CS_SOCKET_ACCEPT /* Accept an incomming connection */ ! 502: ,CS_SOCKET_NREAD /* Get number of bytes in input buffer */ ! 503: ,CS_SOCKET_PEEK /* Peek at input buffer */ ! 504: ,CS_SOCKET_READ /* Read input buffer */ ! 505: ,CS_SOCKET_WRITE /* Write to socket */ ! 506: ,CS_SOCKET_CHECK /* Check connection */ ! 507: ,CS_SOCKET_READLINE /* Read a cr/lf delimited line from socket */ ! 508: ,CS_SOCKET_UNUSED6 ! 509: ,CS_SOCKET_UNUSED5 ! 510: ,CS_SOCKET_UNUSED4 ! 511: ,CS_SOCKET_UNUSED3 ! 512: ,CS_SOCKET_UNUSED2 ! 513: ,CS_SOCKET_UNUSED1 ! 514: ! 515: ,CS_FTP_LOGIN /* socket, username, password */ ! 516: ,CS_FTP_LOGOUT ! 517: ,CS_FTP_PWD /* print working dir */ ! 518: ,CS_FTP_CWD /* change working dir */ ! 519: ,CS_FTP_DIR /* path */ ! 520: ,CS_FTP_PUT /* path */ ! 521: ,CS_FTP_GET /* path, offset */ ! 522: ,CS_FTP_RENAME ! 523: ,CS_FTP_DELETE ! 524: ,CS_FTP_UNUSED7 ! 525: ,CS_FTP_UNUSED6 ! 526: ,CS_FTP_UNUSED5 ! 527: ,CS_FTP_UNUSED4 ! 528: ,CS_FTP_UNUSED3 ! 529: ,CS_FTP_UNUSED2 ! 530: ,CS_FTP_UNUSED1 ! 531: }; ! 532: ! 533: /* Preceeded by CS_FIO_FUNCTION */ ! 534: enum { ! 535: FIO_OPEN /* Open file (static filename) */ ! 536: ,FIO_CLOSE /* Close file */ ! 537: ,FIO_READ /* Read from file */ ! 538: ,FIO_READ_VAR /* Read from file, variable # of bytes */ ! 539: ,FIO_WRITE /* Write to file */ ! 540: ,FIO_WRITE_VAR /* Write to file, variable # of bytes */ ! 541: ,FIO_GET_LENGTH /* Get length */ ! 542: ,FIO_EOF /* Set logic to TRUE if eof */ ! 543: ,FIO_GET_POS /* Get current file position */ ! 544: ,FIO_SEEK /* Seek within file */ ! 545: ,FIO_SEEK_VAR /* Seek within file, variable offset */ ! 546: ,FIO_LOCK /* Lock a region */ ! 547: ,FIO_LOCK_VAR /* Lock a region, variable length */ ! 548: ,FIO_UNLOCK /* Unlock a region */ ! 549: ,FIO_UNLOCK_VAR /* Unlock a region, variable length */ ! 550: ,FIO_SET_LENGTH /* Change size */ ! 551: ,FIO_SET_LENGTH_VAR /* Change size, variable length */ ! 552: ,FIO_PRINTF /* Write formated string to file */ ! 553: ,FIO_SET_ETX /* Set end-of-text character */ ! 554: ,FIO_GET_TIME /* Gets the current date/time of file */ ! 555: ,FIO_SET_TIME /* Sets the current date/time of file */ ! 556: ,FIO_OPEN_VAR /* Open a file (dynamic filename) */ ! 557: ,FIO_READ_LINE /* Read a single line from file */ ! 558: ,FIO_FLUSH /* Flush buffered output to disk */ ! 559: ,FIO_UNUSED8 ! 560: ,FIO_UNUSED7 ! 561: ,FIO_UNUSED6 ! 562: ,FIO_UNUSED5 ! 563: ,FIO_UNUSED4 ! 564: ,FIO_UNUSED3 ! 565: ,FIO_UNUSED2 ! 566: ,FIO_UNUSED1 ! 567: ,REMOVE_FILE /* Remove a file */ ! 568: ,RENAME_FILE /* Rename a file */ ! 569: ,COPY_FILE /* Copy a file to another file */ ! 570: ,MOVE_FILE /* Move a file to another file */ ! 571: ,GET_FILE_ATTRIB /* Get file attributes */ ! 572: ,SET_FILE_ATTRIB /* Set file attributes */ ! 573: ,MAKE_DIR /* Make directory */ ! 574: ,CHANGE_DIR /* Change current directory */ ! 575: ,REMOVE_DIR /* Remove directory */ ! 576: ,OPEN_DIR /* Open a directory */ ! 577: ,READ_DIR /* Read a directory entry */ ! 578: ,REWIND_DIR /* Rewind an open directory */ ! 579: ,CLOSE_DIR /* Close an open directory */ ! 580: }; ! 581: ! 582: enum { ! 583: USER_STRING_ALIAS ! 584: ,USER_STRING_REALNAME ! 585: ,USER_STRING_HANDLE ! 586: ,USER_STRING_COMPUTER ! 587: ,USER_STRING_NOTE ! 588: ,USER_STRING_ADDRESS ! 589: ,USER_STRING_LOCATION ! 590: ,USER_STRING_ZIPCODE ! 591: ,USER_STRING_PASSWORD ! 592: ,USER_STRING_BIRTHDAY ! 593: ,USER_STRING_PHONE ! 594: ,USER_STRING_MODEM ! 595: ,USER_STRING_COMMENT ! 596: ,USER_STRING_NETMAIL ! 597: ! 598: }; ! 599: ! 600: #define CS_ONE_BYTE CS_IF_TRUE ! 601: #define CS_TWO_BYTE CS_CMDKEY ! 602: #define CS_THREE_BYTE CS_GOTO ! 603: #define CS_ASCIIZ CS_MENU ! 604: #define CS_MISC CS_COMPARE_ARS ! 605: #define CS_FUNCTIONS CS_MAIL_READ ! 606: #define CS_ELSEORENDIF 0xff ! 607: #define CS_NEXTCASE 0xfe ! 608: ! 609: #define CS_DIGIT 0xff ! 610: #define CS_EDIGIT 0xfe ! 611: ! 612: /* Bits for csi_t.misc */ ! 613: #define CS_IN_SWITCH (1L<<0) /* Inside active switch statement */ ! 614: #define CS_OFFLINE_EXEC (1L<<1) /* Offline execution */ ! 615: ! 616: /* Bits for csi_t.ftp_mode */ ! 617: #define CS_FTP_ECHO_CMD (1L<<0) /* Echo command lines to user (for debug) */ ! 618: #define CS_FTP_ECHO_RSP (1L<<1) /* Echo response lines to user */ ! 619: #define CS_FTP_PASV (1L<<2) /* Use PASV mode transfers */ ! 620: #define CS_FTP_ASCII (1L<<3) /* Use ASCII file transfers */ ! 621: #define CS_FTP_HASH (1L<<4) /* Hash marks printing during xfers */ ! 622: ! 623: #define MAX_RETS 50 /* maximum nested call depth */ ! 624: #define MAX_CMDRETS 50 /* maximum nested cmd depth */ ! 625: #define MAX_LOOPDEPTH 50 /* maximum nested loop depth */ ! 626: #define MAX_STRVARS 26 ! 627: #define MAX_INTVARS 26 ! 628: #define MAX_STRLEN 81 ! 629: #define MAX_FOPENS 10 /* maximum open files */ ! 630: #define MAX_SOCKETS 10 /* maximum open sockets */ ! 631: #define MAX_SYSVARS 16 /* maximum system variable saves */ ! 632: ! 633: #define LOGIC_LESS -1 ! 634: #define LOGIC_EQUAL 0 ! 635: #define LOGIC_GREATER 1 ! 636: #define LOGIC_TRUE LOGIC_EQUAL ! 637: #define LOGIC_FALSE LOGIC_LESS ! 638: ! 639: typedef struct { /* Command shell image */ ! 640: ! 641: char* str, /* Current string */ ! 642: **str_var; /* String variables */ ! 643: ! 644: uchar *cs, /* Command shell image */ ! 645: *ip, /* Instruction pointer */ ! 646: cmd, /* Current command key */ ! 647: etx, /* End-of-text character */ ! 648: *ret[MAX_RETS], /* Return address stack */ ! 649: *cmdret[MAX_CMDRETS], /* Command return address stack */ ! 650: *loop_home[MAX_LOOPDEPTH]; /* Loop home address stack */ ! 651: ! 652: int logic; /* Current logic */ ! 653: ! 654: FILE *file[MAX_FOPENS]; /* Each file ptr */ ! 655: int socket[MAX_SOCKETS]; /* Open socket descriptors */ ! 656: long socket_error; /* Last socket error */ ! 657: ! 658: uint str_vars, /* Total number of string variables */ ! 659: int_vars, /* Total number of integer variables */ ! 660: files, /* Open files */ ! 661: sockets, /* Open sockets */ ! 662: rets, /* Returns on stack */ ! 663: loops, /* Nested loop depth (loops on stack) */ ! 664: cmdrets; /* Command returns on stack */ ! 665: ! 666: long retval, /* Return value */ ! 667: misc, /* Misc bits */ ! 668: ftp_mode, /* FTP operation mode */ ! 669: switch_val, /* Current switch value */ ! 670: *int_var, /* Integer variables */ ! 671: *str_var_name, /* String variable names (CRC-32) */ ! 672: *int_var_name; /* Integer variable names (CRC-32) */ ! 673: ! 674: long length; /* Length of image */ ! 675: ! 676: } csi_t; ! 677: ! 678: #endif /* End of CMDSHELL.H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.