## XMPP Client Implementation - Create XMPP client with mellium.im/xmpp library - Add SASL Plain authentication with TLS support - Implement basic connection, ping, and disconnect functionality - Add TLS certificate verification skip option for development ## Development Server Management - Add custom makefile targets for XMPP server management - Implement devserver_start, devserver_stop, devserver_status commands - Add devserver_logs, devserver_clean, devserver_doctor commands - Create comprehensive sidecar/README.md with setup instructions ## XMPP Client Doctor Tool - Create cmd/xmpp-client-doctor diagnostic tool - Add CLI flags for server configuration with sensible defaults - Implement verbose logging and connection testing - Include insecure TLS option for development environments ## Bridge Architecture Foundation - Create placeholder bridge structs in proper package hierarchy - Add server/bridge/mattermost and server/bridge/xmpp packages - Update plugin initialization to create bridge instances - Maintain clean separation between Mattermost and XMPP concerns ## Dependencies and Configuration - Add mellium.im/xmpp dependencies to go.mod - Fix plugin.json password field type validation - Update README.md with XMPP bridge description and doctor usage - Add .claude.md to .gitignore for local development notes All tests passing. Ready for Phase 4 (Bridge Logic) implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
---|---|---|
.. | ||
docker-compose.yml | ||
README.md |
Development XMPP Server
This folder contains a docker-compose.yml
file for development purposes. It sets up a local XMPP server (Openfire) to use while developing the Mattermost XMPP bridge plugin.
Quick Start
From the project root directory, use the Makefile targets:
# Start the XMPP server
make devserver_start
# Check server status
make devserver_status
# Test connectivity with the doctor tool
make devserver_doctor
# Stop the server
make devserver_stop
Manual Docker Usage
Alternatively, you can manage the server directly:
# Start the server
cd sidecar
docker compose up -d
# Stop the server
docker compose down
# View logs
docker compose logs -f openfire
Initial Setup
After starting the server for the first time, you need to complete the Openfire setup:
1. Access Admin Console
Open your web browser and go to: http://localhost:9090
2. Complete Setup Wizard
- Language Selection: Choose your preferred language
- Server Settings:
- Server Domain:
localhost
(default is fine) - Keep other defaults
- Server Domain:
- Database Settings:
- Choose "Embedded Database" for development
- This creates a local database that persists in Docker volumes
- Profile Settings:
- Choose "Default" (no LDAP needed for development)
- Administrator Account:
- Username:
admin
- Password:
admin
(for development consistency) - Email:
admin@localhost
- Username:
3. Create Test User
After completing the setup wizard:
- Log in to the admin console with
admin
/admin
- Go to Users/Groups → Create New User
- Fill in the user details:
- Username:
testuser
- Password:
testpass
- Confirm Password:
testpass
- Name:
Test User
- Email:
testuser@localhost
- Username:
- Click Create User
4. Test Connectivity
Run the doctor tool to verify everything is working:
make devserver_doctor
You should see successful connection, ping, and disconnect messages.
Server Details
- Admin Console: http://localhost:9090
- XMPP Server: localhost:5222 (client connections)
- XMPP SSL Server: localhost:5223 (SSL client connections)
- XMPP Server-to-Server: localhost:5269
- File Transfer Proxy: localhost:7777
Test Credentials
After setup, use these credentials for testing:
- Admin User:
admin
/admin
- Test User:
testuser@localhost
/testpass
Data Persistence
The server data is stored in Docker volumes:
sidecar_openfire_data
: Openfire configuration and databasesidecar_postgres_data
: PostgreSQL database (if you choose PostgreSQL instead of embedded DB)
Troubleshooting
Server Won't Start
# Check if ports are already in use
lsof -i :9090
lsof -i :5222
# View server logs
make devserver_logs
Reset Everything
# This removes all data and containers
make devserver_clean
Test Different Configurations
# Test with custom server settings
go run cmd/xmpp-client-doctor/main.go \
-server="localhost:5222" \
-username="testuser@localhost" \
-password="testpass" \
-insecure-skip-verify=true \
-verbose=true
Development Notes
- The server uses self-signed certificates, so the doctor tool defaults to
-insecure-skip-verify=true
- All data persists between container restarts unless you run
make devserver_clean
- The PostgreSQL and Adminer services are included but optional (you can use embedded database)
- The server takes ~30 seconds to fully start up after
docker compose up