# Prosody Password Manager This project provides a web interface to change the password for XMPP accounts managed by Prosody. It interfaces with the Prosody server to securely handle password changes. ## Project Structure ```bash . ├── cmd │ └── http │ ├── main.go │ └── views │ ├── error.hbs │ ├── index.hbs │ ├── styles.hbs │ └── success.hbs ├── go.mod ├── go.sum ├── internal │ ├── api │ │ ├── handler │ │ │ ├── helper.go │ │ │ └── prosody_hdl.go │ │ └── server.go │ └── services │ ├── fail2ban │ │ └── fail.go │ └── prosody │ ├── account.go │ ├── change_password.go │ ├── change_password_test.go │ └── prosody.go ├── kit │ ├── config │ │ └── config.go │ └── path.go └── LICENSE ``` ## Key Files - **logic** to change the password in the Prosody server. It interfaces with the Prosody server's command-line tools and verifies the current password before making any changes. - **prosody.go**: Provides utility functions related to the Prosody server, including constructing paths to account data files. - **account.go**: Contains utility functions to load account details from Prosody's data files. - **server.go**: Sets up the web server, routes, and middleware for the application. - **main.go**: The entry point of the application. It initializes the services and starts the web server. ## Requirements - **Prosody Server**: Ensure that the Prosody server is installed and running on your machine. This application interfaces with Prosody's command-line tools to manage XMPP accounts. - **Environment Variables**: The application requires certain environment variables to be set. These can be provided directly or through a **.env** file. The required variables are: - **DOMAIN**: The domain for the Prosody server (e.g., **xmpp.example.com**). - **API_PORT** (optional): The port on which the web server will run. Defaults to **8080** if not provided. - **VIEWS** (optional): The path to the directory containing view templates. Defaults to **./views** if not provided. ## Setup & Running 1. Ensure you have Go installed on your machine. 2. Clone the repository. 3. Navigate to the project directory. 4. Run the application using: ```bash go run cmd/http/main.go ``` Visit **http://localhost:** in your browser to access the password change interface. ## Contributing If you'd like to contribute to this project, please fork the repository and submit a pull request.