Table of Contents

1 Introduction

2 Web-Enabling Your Application

2.1 Designing Your Application
2.2 The Smallest Web Server in the WWW
2.3 Web Server Architecture
2.3.1 Application Block
2.3.2 HTTP Block
2.3.3 HTTP Block Subcomponents
2.3.4 Zserver Block
2.4 Architecture of a Toy Application
2.5 A Simple but Realistic Application
2.6 Adding Access Controls
2.7 A Full-Featured Application
2.8 Living Without RabbitWeb and FAT

3 Server Utility Library

3.1 Data Structures for Zserver.lib
3.1.1 MIMETypeMap Structure
3.1.2 ServerSpec Structure
3.1.3 ServerAuth Structure
3.1.4 ServerPermissions Structure
3.1.5 RuleEntry Structure
3.1.6 ServerContext Structure
3.1.7 SSpecStat Structure
3.1.8 sspec_fatinfo Structure
3.1.9 FormVar Structure
3.1.10 SSpecFileHandle Structure
3.2 Constants Used in Zserver.lib
3.2.1 ServerSpec Type Field
3.2.2 ServerSpec Vartype Field
3.2.3 ServerPermissions Servermask Field
3.2.4 Configuration Macros
3.2.5 Macros for Control Data Initialization
3.3 File Compression Support
3.4 HTML Forms
3.5 API Functions

4 HTTP Server

4.1 HTTP Server Data Structures
4.1.1 HttpState
4.2 Configuration Macros
4.2.1 Sending Customized HTTP Headers to the Client
4.2.2 Saving Custom Headers from the Client
4.3 Authentication Methods
4.4 Setting the Time Zone
4.5 Sample Programs
4.5.1 Serving Static Web Pages
4.5.2 Dynamic Web Pages Without HTML Forms
4.5.3 Web Pages With HTML Forms
4.5.4 HTML Forms Using Zserver.lib
4.6 HTTP File Upload
4.6.1 What is a CGI Function and Why is It Useful?
4.6.2 How Do I Use the New CGI Facility?
4.7 API Functions for HTTP Servers

5 RabbitWeb

5.1 Getting Started: A Simple Example
5.1.1 Dynamic C Application Code for Humidity Detector
5.1.2 HTML Pages for Humidity Detector
5.2 Dynamic C Language Enhancements for RabbitWeb
5.2.1 Registering Variables, Arrays and Structures
5.2.2 Web Guards
5.2.3 Security Features
5.2.4 Handling Variable Changes
5.3 ZHTML Scripting Language
5.3.1 SSI Tags, Statements and Variables
5.3.2 Flow Control
5.3.3 Selection Variables
5.3.4 Checkboxes and RadioButtons
5.3.5 Error Handling
5.3.6 Security: Permissions and Authentication
5.4 TCP to Serial Port Configuration Example
5.4.1 Dynamic C Application Code
5.4.2 HTML Page for TCP to Serial Port Example
5.5 RabbitWeb Reference
5.5.1 Language Enhancements Grammar
5.5.2 Configuration Macros
5.5.3 Compiler Directives
5.5.4 ZHTML Grammar
5.5.5 RabbitWeb Functions

6 FTP Client

6.1 Configuration Macros
6.2 API Functions
ftp_client_setup
ftp_client_tick
ftp_client_filesize
ftp_client_xfer
ftp_data_handler
ftp_last_code
6.3 Sample FTP Transfer

7 FTP Server

7.1 Configuration Macros
7.2 File Handlers
7.2.1 Replacing the Default Handlers
7.2.2 File Handlers Specification
ftp_dflt_open
ftp_dflt_getfilesize
ftp_dflt_read
ftp_dflt_write
ftp_dflt_close
ftp_dflt_list
ftp_dflt_cd
ftp_dflt_pwd
ftp_dflt_mdtm
ftp_dflt_delete
7.3 API Functions
ftp_dflt_is_auth
ftp_init
ftp_load_filenames
ftp_save_filenames
ftp_set_anonymous
ftp_shutdown
ftp_tick
7.4 Sample FTP Server
7.5 Getting Through a Firewall
7.6 FTP Server Commands
7.7 Reply Codes to FTP Commands

8 TFTP Client

8.1 BOOTP/DHCP
8.2 Data Structure for TFTP
8.3 API Functions
tftp_init
tftp_initx
tftp_tick
tftp_tickx
tftp_exec

9 SMTP Mail Client

9.1 Sample Conversation
9.2 SMTP Authentication
9.3 Sample Sending of an E-mail
9.4 Configuration Macros
9.5 API Functions
smtp_data_handler
smtp_mailtick
smtp_sendmail
smtp_sendmailxmem
smtp_setauth
smtp_setserver
smtp_setserver_ip
smtp_status

10 POP3 Client

10.1 Configuration
10.2 Steps to Receive E-mail.
10.3 Call-Back Function
10.3.1 Normal call-back
10.3.2 POP_PARSE_EXTRA call-back
10.4 API Functions
pop3_init
pop3_getmail
pop3_tick
10.5 Sample Receiving of E-mail
10.5.1 Sample Conversation

11 SNMP

11.1 SNMP Overview
11.1.1 Managed Objects
11.1.2 SNMP Agent
11.1.3 MIBs
11.1.4 SMI
11.2 Demo Program
11.2.1 Creating Managed Objects
11.2.2 Callback Functions
11.2.3 Creating Communities
11.2.4 Creating the MIB
11.2.5 Defining Managed Objects with SMI
11.2.6 Running the SNMP Agent
11.3 Configuration Macros
11.4 API Functions
snmp_add
snmp_add_community
snmp_append_binary_oid
snmp_append_binary_stem
snmp_append_oid
snmp_append_parse_oid
snmp_append_parse_stem
snmp_append_stem
snmp_community_mask
snmp_community_name
snmp_copy_oid
snmp_delete
snmp_format_oid
snmp_get
snmp_get_indexed
snmp_get_next
snmp_init_parms
snmp_last_index
snmp_last_int
snmp_last_len
snmp_last_long
snmp_last_maxlen
snmp_last_mem
snmp_last_objectID
snmp_last_snmp_type
snmp_last_type
snmp_last_xmem
snmp_monitor
snmp_print_tree
snmp_set_access
snmp_set_callback
snmp_set_community
snmp_set_dflt_communities
snmp_set_foct
snmp_set_int
snmp_set_long
snmp_set_objectID
snmp_set_oct
snmp_set_oid
snmp_set_parse_oid
snmp_set_parse_stem
snmp_set_stem
snmp_set_str
snmp_start
snmp_stop
snmp_time_since
snmp_timeticks
snmp_trap
snmp_unmonitor
snmp_up_oid
snmp_up_stem
snmp_used
snmp_xadd

12 Telnet

12.1 Telnet (Dynamic C 7.05 and Later)
12.1.1 Setup
12.1.2 API Functions (Dynamic C 7.05 and Later)
vserial_close
vserial_init
vserial_keepalive
vserial_listen
vserial_open
vserial_tick
12.2 Telnet (pre-Dynamic C 7.05)
12.2.1 Configuration Macros
12.2.2 API Functions
telnet_init
telnet_tick
telnet_close
12.2.3 An Example Telnet Server
12.2.4 An Example Telnet Client

13 General Purpose Console

13.1 Zconsole Features
13.1.1 File System Requirement
13.1.2 TCP/IP and Zconsole
13.2 Login Name and Password
13.3 Zconsole Commands and Messages
13.3.1 Zconsole Command Data Structure
13.4 Zconsole Command Array
13.4.1 Zconsole Commands
13.4.2 Zconsole Error Messages
13.5 Zconsole I/O Interface
13.5.1 How to Include an I/O Method
13.5.2 Predefined I/O Methods
13.5.3 Multiple I/O Streams
13.6 Zconsole Execution
13.6.1 File System Initialization
13.6.2 Serial Buffers
13.6.3 Using TCP/IP
13.6.4 Required Zconsole Functions
console_init
console_tick
13.6.5 Useful Zconsole Function
con_backup
con_backup_bytes
con_backup_reserve
con_chk_timeout
con_load_backup
con_reset_io
con_set_backup_lx
con_set_files_lx
con_set_user_idle
con_set_timeout
con_set_user_timeout
console_disable
console_enable
13.6.6 Zconsole Execution Choices
13.7 Backup System
13.7.1 Data Structure for Backup System
13.7.2 Array Definition for Backup System
13.8 Zconsole Macros
13.9 Sample Program

Index