Programming Jabber. Extending XML Messaging - Helion
ISBN: 978-14-493-7878-3
stron: 482, Format: ebook
Data wydania: 2002-01-07
Księgarnia: Helion
Cena książki: 118,15 zł (poprzednio: 147,69 zł)
Oszczędzasz: 20% (-29,54 zł)
Jabber is a set of protocols expressed in XML, and an extensible framework that allows people and applications to exchange all sorts of information, from simple text messages to being used to extend the backbone of an enterprise data system. Jabber gives you the power to build applications that have identity, presence, and that can take part in conversations.Programming Jabber offers developers a chance to learn and understand the Jabber technology and protocol from an implementer's point of view. Detailed information of each part of the Jabber protocol is introduced, explained, and discussed in the form of mini-projects, or simple and extended examples. Programming Jabber provides this foundation by:
- Showing you how to install and configure the Jabber server
- Providing a detailed overview of the server architecture and configuration options
- Covering the core Jabber technologies such as XML streams and Jabber identifiers
- Referencing all of Jabber's XML namespaces
- Examining the client registration and authentication phases
- Showing how to deploy your own Jabber-based messaging solutions
- Demonstrating how to embed XML-RPC-style call mechanisms into Jabber
Osoby które kupowały "Programming Jabber. Extending XML Messaging", wybierały także:
- Flash i Wallaby. Projektowanie animacji zgodnych z HTML5 24,69 zł, (7,90 zł -68%)
- API nowoczesnej strony WWW. Usługi sieciowe w PHP 32,90 zł, (16,45 zł -50%)
- XML. Szybki start. Wydanie II 49,00 zł, (24,50 zł -50%)
- XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz XSLT. Niebieski podręcznik 49,00 zł, (24,50 zł -50%)
- Java i XML. Wydanie III 57,00 zł, (28,50 zł -50%)
Spis treści
Programming Jabber. Extending XML Messaging eBook -- spis treści
- Programming Jabber
- SPECIAL OFFER: Upgrade this ebook with OReilly
- A Note Regarding Supplemental Files
- Preface
- The History of Jabber
- The Pre-Jabber History
- Scratching an Itch
- Along Came Jabber
- IM System Features
- Whats Inside
- Software Used in This Book
- Java
- Perl
- Python
- Where to Go for More Information
- Conventions Used in This Book
- How to Contact Us
- Acknowledgments
- The History of Jabber
- I. Getting Started with Jabber
- 1. Introducing Jabber
- 1.1. Imaginary Jabber Conversation
- 1.2. A Simple Script
- 2. Inside Jabber
- 2.1. XML-Based
- 2.2. Asynchronous Nature
- 2.2.1. Store and Forward
- 2.2.2. Queuing
- 2.2.3. Message Receipt
- 2.3. Messaging
- 2.4. Payload Carrier
- 2.5. Request/Response
- 2.6. Component/Service Architecture
- 2.7. Custom Clients
- 2.8. XML-RPC and SOAP
- 2.9. Browsing
- 3. Installing the Jabber Server
- 3.1. Downloading the Jabber Server
- 3.2. Installing the Server
- 3.2.1. Running the Configure Server
- 3.2.2. Running make
- 3.3. Configuring the Jabber Server
- 3.4. Starting and Stopping the Jabber Server
- 3.4.1. Starting the Server
- 3.4.2. Connecting a Client
- 3.4.3. Stopping the Server
- 3.4.4. jabberd Command-Line Switches
- 3.5. Monitoring and Troubleshooting the Server
- 3.5.1. If Your Server Doesn't Start
- 4. Server Architecture and Configuration
- 4.1. An Overview of the Server Architecture
- 4.1.1. jabberd and Components
- 4.1.2. Component Types
- 4.1.2.1. The log components
- 4.1.2.2. The xdb components
- 4.1.2.3. The service components
- 4.1.2.4. Delivery trees
- 4.1.3. Component Connection Methods
- 4.1.3.1. Library load
- 4.1.3.2. TCP sockets
- 4.1.3.3. Standard I/O (STDIO)
- 4.2. Server Configuration
- 4.2.1. Component Instances
- 4.2.2. A Typical Component Instance Description
- 4.2.2.1. Component type
- 4.2.2.2. Identification
- 4.2.2.3. Host filter
- 4.2.2.4. The <host/> tag
- 4.2.2.5. Component connection method
- 4.2.2.6. Custom configuration
- 4.3. A Tour of jabber.xml
- 4.4. Component Instance: sessions
- 4.4.1. Component Type and Identification
- 4.4.2. Host Filter
- 4.4.3. Custom Configuration
- 4.4.3.1. Filter service
- 4.4.3.2. Server vCard
- 4.4.3.3. Registration instructions
- 4.4.3.4. Welcome message
- 4.4.3.5. Administration
- 4.4.3.6. Update info request
- 4.4.3.7. Autoupdate of JUD
- 4.4.3.8. Browsable service information
- 4.4.4. Component Connection Method
- 4.5. Component Instance: xdb
- 4.5.1. Component Type and Identification
- 4.5.2. Host Filter
- 4.5.3. Custom Configuration
- 4.5.4. Component Connection Method
- 4.6. Component Instance: c2s
- 4.6.1. Component Type and Identification
- 4.6.2. Host Filter
- 4.6.3. Custom Configuration
- 4.6.4. Component Connection Method
- 4.7. Logging Definition: elogger
- 4.7.1. Component Type and Identification
- 4.7.2. Host Filter
- 4.7.3. Custom Configuration
- 4.8. Logging Definition: rlogger
- 4.8.1. Component Type and Identification
- 4.8.2. Host Filter
- 4.8.3. Custom Configuration
- 4.9. Component Instance: dnsrv
- 4.9.1. Component Type and Identification
- 4.9.2. Host Filter
- 4.9.3. Custom Configuration
- 4.9.4. Component Connection Method
- 4.10. Component Instance: conf
- 4.10.1. Component Type and Identification
- 4.10.2. Host Filter
- 4.10.3. Custom Configuration
- 4.10.4. Component Connection Method
- 4.11. Component Instance: jud
- 4.11.1. Component Type and Identification
- 4.11.2. Host Filter
- 4.11.3. Custom Configuration
- 4.11.4. Component Connection Method
- 4.12. Component Instance: s2s
- 4.12.1. Component Type and Identification
- 4.12.2. Host Filter
- 4.12.3. Custom Configuration
- 4.12.4. Component Connection Method
- 4.13. The io Section
- 4.13.1. The <rate/> Tag
- 4.13.2. The <karma/> Tag
- 4.13.3. The <ssl/> Tag
- 4.13.4. The <allow/> and <deny/> Tags
- 4.14. pidfile Section
- 4.15. Managing the Configuration
- 4.15.1. The <jabberd:cmdline/> Tag
- 4.16. Server Constellations
- 4.16.1. Multiple Servers on One Host
- 4.16.2. "Real" Virtual Jabber Servers
- 4.16.2.1. Configuration for a-domain.com
- 4.16.2.2. Configuration for b-domain.com
- 4.16.3. Splitting Up Jabber Server Processes
- 4.16.3.1. Define the configuration for the satellite server
- 4.16.3.2. Open a connection point in the main server
- 4.16.3.3. List the service definition in <browse/>
- 4.16.3.4. Add a connector mechanism to the satellite server
- 4.16.3.5. Specify a different PID file location
- 4.16.3.6. Starting the main server
- 4.16.3.7. Starting the satellite server
- 4.16.4. Using Services on Other Jabber Servers
- 4.1. An Overview of the Server Architecture
- 1. Introducing Jabber
- II. Putting Jabber's Concepts to Work
- 5. Jabber Technology Basics
- 5.1. Jabber Identifiers
- 5.1.1. Rules and Regulations
- 5.2. Resources and Priorities
- 5.3. XML Streams
- 5.3.1. The Conversation as XML Documents
- 5.3.2. The Opening Tag
- 5.3.3. The Response
- 5.3.3.1. The from attribute
- 5.3.3.2. The id attribute
- 5.3.4. The Simplest Jabber Client
- 5.4. Jabber's Building Blocks
- 5.4.1. The Message Element
- 5.4.1.1. Message attributes
- type
- from
- to
- id
- 5.4.1.2. Message subelements
- subject
- body
- error
- html
- thread
- x
- 5.4.1.1. Message attributes
- 5.4.2. The Presence Element
- 5.4.2.1. Presence attributes
- type
- from
- to
- id
- 5.4.2.2. Presence subelements
- show
- status
- priority
- x
- 5.4.2.3. Presence subscription
- 5.4.2.4. Availability Tracker
- 5.4.2.1. Presence attributes
- 5.4.3. The IQ Element
- 5.4.3.1. IQ attributes
- type
- from
- to
- id
- 5.4.3.2. IQ subelements
- query
- error
- 5.4.3.1. IQ attributes
- 5.4.1. The Message Element
- 5.1. Jabber Identifiers
- 6. Jabber Namespaces
- 6.1. Namespace Usage
- 6.2. The IQ Namespaces
- 6.2.1. jabber:iq:agent
- 6.2.2. jabber:iq:agents
- 6.2.3. jabber:iq:auth
- 6.2.4. jabber:iq:autoupdate
- 6.2.5. jabber:iq:browse
- 6.2.5.1. Descending the browse hierarchy from an LDAP reflector
- 6.2.6. jabber:iq:conference
- 6.2.6.1. The jabber:iq:conference namespace at work
- 6.2.7. jabber:iq:gateway
- 6.2.7.1. Discovering and using the AIM Transport's jabber:iq:gateway utility
- 6.2.8. jabber:iq:last
- 6.2.9. jabber:iq:oob
- 6.2.10. jabber:iq:private
- 6.2.10.1. Storing public data
- 6.2.11. jabber:iq:register
- 6.2.11.1. The <key/> tag
- 6.2.12. jabber:iq:roster
- 6.2.13. jabber:iq:search
- 6.2.14. jabber:iq:time
- 6.2.14.1. Specifying clients as query targets
- 6.2.15. jabber:iq:version
- 6.3. The X Namespaces
- 6.3.1. jabber:x:autoupdate
- 6.3.2. jabber:x:conference
- 6.3.3. jabber:x:delay
- 6.3.4. jabber:x:encrypted
- 6.3.5. jabber:x:envelope
- 6.3.6. jabber:x:event
- 6.3.7. jabber:x:expire
- 6.3.8. jabber:x:oob
- 6.3.9. jabber:x:roster
- 6.3.10. jabber:x:signed
- 6.4. The X::IQ Relationship
- 6.5. Miscellaneous Namespaces
- 6.5.1. The vcard-temp Namespace
- 6.5.2. The XHTML Namespace
- 7. User Registration and Authorization
- 7.1. XML Stream Flow
- 7.2. User Registration
- 7.2.1. Configuration and Module Load Directives
- 7.2.2. Step by Step
- 7.2.2.1. The XML stream header exchange
- 7.2.2.2. "Required" fields
- 7.2.2.3. Set without get
- 7.2.2.4. Still no connection
- 7.2.2.5. Passwords
- 7.2.2.6. Reversing a user registration
- 7.2.2.7. A note on error messages
- 7.3. User Authentication
- 7.3.1. Configuration and Module Load Directives
- 7.3.1.1. Plaintext authentication method
- 7.3.1.2. Digest authentication method
- 7.3.1.3. Zero-knowledge authentication method
- 7.3.2. Choosing the Authentication Method
- 7.3.3. Password Errors and Retries
- 7.3.1. Configuration and Module Load Directives
- 7.4. User Registration Script
- 7.4.1. Using the Script
- 8. Using Messages and Presence
- 8.1. CVS Notification via Jabber
- 8.1.1. CVS Watches and Notification
- 8.1.1.1. CVS commands
- 8.1.1.2. CVS administrative files
- 8.1.1.3. The notification
- 8.1.2. CVS Notifications via Jabber
- 8.1.3. The cvsmsg Script
- 8.1.1. CVS Watches and Notification
- 8.2. Dialup System Watch
- 8.2.1. Making Preparations for Execution
- 8.2.1.1. Presence
- 8.2.1.2. Starting and stopping the script
- 8.2.2. The HostAlive Script
- 8.2.3. Step by Step
- 8.2.1. Making Preparations for Execution
- 8.3. Presence-Sensitive CVS Notification
- 8.3.1. Subscription Relationships
- 8.3.2. The cvsmsg-s Script
- 8.3.3. Taking the cvsmsg-s Script Step by Step
- 8.3.3.1. Presence callback
- 8.3.3.2. Connection and authentication
- 8.3.3.3. Registration of <presence/> handler
- 8.3.3.4. Request for roster
- 8.3.3.5. Sending of availability information
- 8.3.3.6. Waiting for packets
- 8.3.3.7. Finishing up
- 8.3.4. Jabber Programming and Callbacks
- 8.1. CVS Notification via Jabber
- 9. Groupchat, Components, and Event Models
- 9.1. Keyword Assistant
- 9.1.1. Conferencing
- 9.1.2. The Script's Scope
- 9.1.3. The keyassist Script
- 9.1.4. Dissecting the keyassist Script
- 9.1.4.1. Maintaining the keyword dictionary
- 9.1.4.2. Message callback
- 9.1.4.3. Presence callback
- 9.1.4.4. The main script
- 9.1.4.5. The processing loop
- 9.2. Connecting Devices to Jabber
- 9.2.1. What We're Going to Do
- 9.2.2. The Coffee Script
- 9.2.3. Examining the Coffee Script Step by Step
- 9.2.3.1. Declaring the modules, constants, and variables
- 9.2.3.2. Initialization and calibration
- 9.2.3.3. Connecting to the Jabber server
- 9.2.3.4. Sensor poll/presence push loop
- 9.2.3.5. The setup_Jabber() function
- 9.2.3.6. The set_presence() function
- 9.2.3.7. The InPresence() subroutine
- 9.2.3.8. The setup_RCX() function
- 9.2.3.9. The calibrate() function
- 9.2.3.10. The set_status() function
- 9.3. An RSS News Agent
- 9.3.1. Writing the News Agent
- 9.3.1.1. The newsagent script as a component
- 9.3.1.2. Working out who gets what newsfeeds
- 9.3.1.3. Polling the RSS sources
- 9.3.2. Other Differences Between Client and Component Programming
- 9.3.3. The RSS News Agent Script
- 9.3.4. Reviewing the RSS News Agent Script Step by Step
- 9.3.4.1. Module declarations and variable definitions
- 9.3.4.2. Connecting to the Jabber server
- 9.3.4.3. Preparing the RSS event function and element handlers
- 9.3.4.4. Authenticating handshake and launch of main loop
- 9.3.4.5. Handling registration requests
- 9.3.4.6. Handling version requests
- 9.3.4.7. Handling browse requests
- 9.3.4.8. Dealing with other requests
- 9.3.4.9. The RSS mechanism
- 9.3.4.10. The cleanup() function
- 9.3.4.11. Helper functions
- 9.3.5. Further Ideas
- 9.3.1. Writing the News Agent
- 9.4. A Simple Headline Viewer
- 9.4.1. What the Headline Viewer Is Going to Do
- 9.4.2. The hlv Script
- 9.4.3. Reviewing the hlv Script Step by Step
- 9.1. Keyword Assistant
- 10. Pointers for Further Development
- 10.1. A Simple Jabber-Based Address Book
- 10.1.1. Using the JUD and vCards
- 10.1.2. What Demo::JBook Will Do
- 10.1.2.1. Searching a JUD
- 10.1.2.2. Retrieving vCard information
- 10.1.3. Using Demo::JBook as an Apache Handler
- 10.1.4. The Demo::JBook Script
- 10.1.5. Taking Demo::JBook Step by Step
- 10.1.5.1. Declarations
- 10.1.5.2. General handler preparation
- 10.1.5.3. State 1: Build the JUD query form
- 10.1.5.4. State 2: Query the JUD
- 10.1.5.5. State 3: Retrieve a vCard
- 10.1.5.6. General handler close
- 10.1.6. Notes for Improvement
- 10.2. XML-RPC over Jabber
- 10.2.1. Jabber-RPC
- 10.2.2. Building a Requester and a Responder
- 10.2.2.1. The responder: JabberRPCResponder
- 10.2.2.2. The requester: JabberRPCRequester
- 10.2.3. JabberRPCResponder
- 10.2.3.1. The RPCHandler class
- 10.2.3.2. The IQRPC classes
- 10.2.3.3. The JabberRPCResponder script
- 10.2.4. Looking at JabberRPCResponder Step by Step
- 10.2.5. JabberRPCRequester
- 10.2.6. Looking at JabberRPCRequester Step by Step
- 10.2.7. Jabber-RPC in Perl
- 10.3. Browsing LDAP
- 10.3.1. Building the Reflector
- 10.3.1.1. Identifying ldapr in the browsing hierarchy
- 10.3.1.2. Navigating into the LDAP hierarchy
- 10.3.1.3. What the reflector is actually doing
- 10.3.2. The ldapr script
- 10.3.3. Looking at ldapr Step by Step
- 10.3.3.1. Performing the actual reflection
- 10.3.3.2. Supporting functions
- 10.3.1. Building the Reflector
- 10.4. Building an ERP Connection
- 10.4.1. Building an Order Approval Notification Mechanism
- 10.4.1.1. Getting the notification out of R/3
- 10.4.2. The approv Script
- 10.4.3. Taking This Further
- 10.4.1. Building an Order Approval Notification Mechanism
- 10.1. A Simple Jabber-Based Address Book
- 5. Jabber Technology Basics
- A. The jabber.xml Contents
- B. The IQRPC Classes for JabberRPCResponder
- B.1. The IQRPC Class
- B.2. The IQRPCBuilder Class
- About the Author
- Colophon
- SPECIAL OFFER: Upgrade this ebook with OReilly