aboutsummaryrefslogtreecommitdiffstats
path: root/src/content/docs/advanced
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-11-29 15:22:31 +0000
committersaturneric <[email protected]>2024-11-29 15:23:24 +0000
commit49be7c4c427be2e1802f7a275426279e60ee29fd (patch)
tree4bad9526b4710231f7f05632d96d3e730e566862 /src/content/docs/advanced
parentfix: add contents and fix broken links (diff)
downloadManual-49be7c4c427be2e1802f7a275426279e60ee29fd.tar.gz
Manual-49be7c4c427be2e1802f7a275426279e60ee29fd.zip
feat: add and improve documents
Diffstat (limited to 'src/content/docs/advanced')
-rw-r--r--src/content/docs/advanced/gnupg-controller.md140
-rw-r--r--src/content/docs/advanced/key-database.md124
-rw-r--r--src/content/docs/advanced/module-controller.md214
3 files changed, 478 insertions, 0 deletions
diff --git a/src/content/docs/advanced/gnupg-controller.md b/src/content/docs/advanced/gnupg-controller.md
new file mode 100644
index 0000000..70b5d29
--- /dev/null
+++ b/src/content/docs/advanced/gnupg-controller.md
@@ -0,0 +1,140 @@
+---
+title: A Comprehensive Guide of GpgController
+sidebar:
+ label: Gpg Controller
+---
+
+The **GpgController** in **GpgFrontend** is a powerful tool for configuring and
+managing GPG-related settings. It provides advanced options for file operations,
+password input methods, and custom GPG configurations, catering to both general
+and advanced users.
+
+## Accessing the GpgController
+
+To access the **GpgController**:
+
+1. Navigate to the **Advanced** menu in the top toolbar.
+2. Select **Open GnuPG Controller** from the dropdown menu.
+
+ ![Open GnuPG Controller](https://image.cdn.bktus.com/i/2024/11/29/abfaa919-2945-1acc-eb35-5c86828a97ca.webp)
+
+The **GpgController** interface includes three tabs: **General**, **Key
+Database**, and **Advanced**. Below is a detailed explanation of each tab's
+features.
+
+## General Tab: Core Settings
+
+The **General** tab provides essential configuration options for GpgFrontend's interaction with GPG.
+
+![General Tab](https://image.cdn.bktus.com/i/2024/11/29/0ee752ca-ecd1-2a86-91b5-f6129184c7a4.webp)
+
+### Available Options
+
+1. **Use Binary Mode for File Operations**
+
+ - This option determines the format used for encrypted or signed files:
+ - **Binary Mode**: Produces compact and efficient files, ideal for storage
+ and processing.
+ - **ASCII Mode**: Generates human-readable files encoded in ASCII format.
+ This is useful for sharing files over email or systems that might corrupt
+ binary files.
+ - **Recommendation**: Use binary mode for local file operations and ASCII
+ mode for file sharing or email attachments.
+
+2. **Use Pinentry as Password Input Dialog**
+
+ - GpgFrontend includes a built-in password input dialog designed as a
+ temporary fallback when no external **Pinentry** program is available.
+ However, the built-in dialog has limitations and may not work for all
+ password input scenarios.
+ - **Recommendation**: Users are strongly encouraged to install a
+ full-featured **Pinentry** program to ensure a seamless and secure password
+ input experience. **Pinentry** is optimized for GnuPG's requirements and
+ provides additional features such as better passphrase caching and hardware
+ token support.
+
+3. **Enable GpgME Debug Log**
+
+ - Enables verbose logging for troubleshooting GPG operations via the
+ **GpgME** library. This is useful for advanced users diagnosing issues in
+ encryption or signing workflows.
+
+4. **Restart Gpg Agent on Start**
+
+ - Ensures that the GPG agent is restarted whenever GpgFrontend launches. This
+ helps avoid issues caused by stale GPG agent processes.
+
+5. **Kill All GPG Daemons at Close**
+
+ - Terminates all GPG-related background processes when the application exits.
+ This ensures that no sensitive information is cached in memory or
+ accessible after the session ends.
+ - **Recommendation**: Always enable this option for improved security.
+
+ > **Note**: Changes to any settings in the General tab will require
+ > restarting GpgFrontend to take effect.
+
+---
+
+## Key Database Tab: Overview
+
+The **Key Database** tab allows users to manage multiple key databases. While
+detailed documentation is available elsewhere, note the following key points:
+
+- **Add New Key Database**: Easily create and manage isolated key databases for
+ different projects or security requirements.
+- **Switch Between Databases**: Use the **Key Toolbox** dropdown in the main
+ interface to select the active database.
+
+ ![Key Database Tab](https://image.cdn.bktus.com/i/2024/11/29/7a66848e-bc23-fd13-08a4-1923de39369e.webp)
+
+ > For more information on key database management, refer to the dedicated
+ > documentation.
+
+---
+
+## Advanced Tab: Custom GnuPG Configuration
+
+The **Advanced** tab is designed for users who need to configure custom GPG installations.
+
+![Advanced Tab](https://image.cdn.bktus.com/i/2024/11/29/ba283263-c9f5-9a6b-44a7-b0adf79684e8.webp)
+
+### Configuring Custom GnuPG
+
+1. **Enable Custom GnuPG**
+
+ - Check the **Use Custom GnuPG** box to enable this feature.
+
+2. **Specify GPG Configuration Path**
+
+ - Use the **Select GnuPG Path** button to locate and set the directory where
+ `gpgconf` resides. This is critical because GpgFrontend relies on the paths
+ provided by `gpgconf` to locate essential components like `gpg`, `gpgsm`,
+ and `gpg-agent`.
+
+3. **Verifying Custom Configuration**
+
+ - After setting the path, you can test the configuration by running `gpgconf
+--list-components` in a terminal. This command lists all available GPG
+ components and their paths, ensuring that GpgFrontend can access them
+ correctly.
+
+ ![Test gpgconf](https://image.cdn.bktus.com/i/2024/11/29/a9b9eb46-f064-610f-892e-dfc71f1a45d4.webp)
+
+ > **Note**: If `gpgconf` is not configured correctly, GpgFrontend may fail to
+ > locate and execute necessary GPG binaries.
+
+---
+
+## Tips for Using GpgController Effectively
+
+1. **Choose File Formats Wisely**
+
+ - Use **Binary Mode** for efficiency in local operations and **ASCII Mode**
+ for readability and compatibility in file sharing.
+
+2. **Install a Full-Featured Pinentry**
+
+ - Avoid relying on GpgFrontend's built-in password dialog for critical
+ operations. Installing **Pinentry** ensures better compatibility and
+ security.
diff --git a/src/content/docs/advanced/key-database.md b/src/content/docs/advanced/key-database.md
new file mode 100644
index 0000000..44bb2ed
--- /dev/null
+++ b/src/content/docs/advanced/key-database.md
@@ -0,0 +1,124 @@
+---
+title: Multi-Key Database Support
+sidebar:
+ label: Multi-Key Database
+---
+
+GpgFrontend introduces **Multi-Key Database Support**, providing users with a
+flexible and organized way to manage multiple key databases. This feature is
+ideal for users who require separate cryptographic environments for different
+projects, organizations, or levels of security.
+
+## Features and Benefits
+
+### Key Features
+
+1. **Multiple Key Databases**: Manage distinct key databases for specific
+ purposes or contexts.
+2. **Flexible Switching**: Easily switch between databases for different
+ operations without affecting other configurations.
+3. **Customizable Management**: Add, edit, reorder, or remove databases as
+ needed.
+
+### Benefits
+
+- **Improved Security**: Isolate sensitive keys in dedicated databases to
+ minimize exposure.
+- **Enhanced Organization**: Maintain separate databases for better operational
+ clarity.
+- **Streamlined Workflows**: Quickly switch between databases for various
+ projects or encryption tasks.
+
+## Accessing the Multi-Key Database Feature
+
+### Opening the GnuPG Controller
+
+To manage multiple key databases, follow these steps:
+
+1. **Access the Advanced Menu**
+
+ - Click on the **Advanced** menu in the top navigation bar.
+ - Select **Open GnuPG Controller** from the dropdown options.
+
+ ![Open GnuPG Controller](https://image.cdn.bktus.com/i/2024/11/29/abfaa919-2945-1acc-eb35-5c86828a97ca.webp)
+
+2. **Navigate to the Key Database Tab**
+
+ - In the **GnuPG Controller** window, switch to the **Key Database** tab.
+ - Here, you will find a list of all configured key databases.
+
+ ![Key Database Tab](https://image.cdn.bktus.com/i/2024/11/29/7a66848e-bc23-fd13-08a4-1923de39369e.webp)
+
+## Managing Key Databases
+
+The **Key Database** tab allows you to perform the following operations:
+
+### 1. Adding a New Key Database
+
+- Click the **Add New Key Database** button.
+- Specify a name and path for the new database. This will create an isolated
+ environment for new keys.
+
+### 2. Editing and Reordering Key Databases
+
+- Right-click on a database entry to view options like:
+ - **Move Up/Move Down**: Reorder the database list.
+ - **Move to Top**: Prioritize a database by moving it to the top.
+ - **Edit**: Rename or modify the path of an existing database.
+ - **Remove**: Delete a database from the configuration.
+
+![Edit and Reorder Options](https://image.cdn.bktus.com/i/2024/11/29/0fd0d56b-532c-f0a8-c263-40d288cd74ba.webp)
+
+> **Note**: Any changes to the key database settings will require an application
+> restart to take effect.
+
+### 3. Switching Between Databases
+
+- Use the **Key Toolbox** dropdown in the main interface to switch between
+ configured databases.
+- Select the desired database, and the corresponding keys will be displayed.
+
+![Switch Databases](https://image.cdn.bktus.com/i/2024/11/29/dd783ee0-df5e-2b6f-428f-784c68246186.webp)
+
+## Use Cases for Multi-Key Databases
+
+1. **Project Isolation**
+
+ - Maintain separate databases for different projects to avoid accidental
+ cross-use of keys.
+
+2. **Organizational Separation**
+
+ - Keep departmental or team-specific keys isolated to ensure they are only
+ accessible to authorized personnel.
+
+3. **Enhanced Security for Sensitive Keys**
+ - Store high-security keys in a dedicated database, minimizing the risk of
+ exposure during routine operations.
+
+## Tips for Effective Multi-Key Database Usage
+
+1. **Name Databases Clearly**
+
+ - Use descriptive names for each database to make it easier to identify their
+ purpose.
+
+2. **Regular Backups**
+
+ - Backup each database regularly to prevent loss of critical keys. Store
+ backups in secure, encrypted locations.
+
+3. **Audit Database Usage**
+
+ - Periodically review the contents and usage of each database to ensure
+ proper organization and security.
+
+4. **Isolate Sensitive Operations**
+
+ - For highly sensitive keys, consider using a dedicated device or environment
+ to manage their database.
+
+5. **Avoid Overloading Databases**
+
+ - Distribute keys evenly across multiple databases instead of overloading a
+ single one. This enhances performance and organization.
diff --git a/src/content/docs/advanced/module-controller.md b/src/content/docs/advanced/module-controller.md
new file mode 100644
index 0000000..7f5dfaa
--- /dev/null
+++ b/src/content/docs/advanced/module-controller.md
@@ -0,0 +1,214 @@
+---
+title: "Module Controller: Extending GpgFrontend Functionality"
+sidebar:
+ label: Module Controller
+---
+
+The **Module Controller** in **GpgFrontend** allows users to manage modular
+extensions that enhance the core functionality of the application. These modules
+provide features such as email integration, version checking, and key
+synchronization, offering flexibility for different workflows.
+
+This guide provides an overview of the **Module Controller** interface,
+instructions for managing modules, and guidance for advanced users interested in
+developing custom modules.
+
+---
+
+## Accessing the Module Controller
+
+To access the **Module Controller**:
+
+1. Open the **Advanced** menu in the top toolbar.
+2. Select **Open Module Controller**.
+
+ ![Open Module Controller](https://image.cdn.bktus.com/i/2024/11/29/fa515b3c-d9b1-70f5-c355-832b6bf07a38.webp)
+
+The **Module Controller** interface consists of the following tabs:
+
+- **Registered Modules**
+- **Global Register Table**
+
+---
+
+## Registered Modules Tab
+
+The **Registered Modules** tab displays all available modules and provides tools
+for managing their activation, metadata, and storage.
+
+### Key Features
+
+1. **Module List**
+
+ - The left panel lists all currently available modules.
+ - Modules prefixed with `*` are **Integrated Modules**, meaning they are
+ bundled with the GpgFrontend application.
+
+2. **Module Information**
+
+ - When a module is selected, detailed metadata is displayed in the right
+ panel, including:
+
+ - **ID**: The unique identifier of the module.
+ - **Version**: The current module version.
+ - **SDK Version**: The version of the SDK required by the module.
+ - **Path**: The physical location of the module file.
+ - **Activation Status**: Indicates whether the module is active or set to
+ auto-activate.
+
+ Example:
+
+ ```
+ - ID: com.bktus.gpgfrontend.module.email
+ - Version: 1.0.0
+ - SDK Version: 2.1.5
+ - Path: /path/to/module/file
+ - Auto Activate: True
+ - Active: True
+ ```
+
+ ![Registered Modules](https://image.cdn.bktus.com/i/2024/11/29/b35d35f9-4ae2-0d3b-917d-a6fb815711f9.webp)
+
+3. **Module Actions**
+
+ - **Deactivate**: Temporarily disables the selected module.
+ - **Disable Auto Activate**: Prevents the module from loading automatically
+ when GpgFrontend starts.
+
+4. **Show Mods Directory**
+
+ - Opens the directory where external modules are stored. Users can manually
+ add or remove custom modules by placing or deleting files in this
+ directory.
+
+ > **Tip for Integrated Modules**:
+
+ - **Windows/Mac Users**: Integrated Modules (prefixed with `*`) can be
+ removed by deleting the corresponding `.dll` (Windows) or `.dylib` (Mac)
+ file from the `modules` directory.
+ - **Linux Users**: Due to the nature of **AppImage** and **Flatpak**
+ packages, removing Integrated Modules may require recompiling and
+ repackaging the application.
+
+## Global Register Table Tab
+
+The **Global Register Table** provides a detailed view of the internal data
+structure used by GpgFrontend and its modules. This table is primarily useful
+for developers and advanced users who want to debug or inspect module
+interactions with the core application.
+
+### Key Features
+
+1. **Key-Value Data**
+
+ - Displays the hierarchical structure of global variables, including:
+ - Module-specific settings (e.g., version checking, state tracking).
+ - GnuPG paths and environment configurations.
+ - Example:
+ ```
+ gpgme:
+ ctx:
+ app_path: /opt/homebrew/Cellar/gnupg/2.4.5_1/bin/gpg
+ gnupg_version: 2.4.5
+ gpgconf_path: /opt/homebrew/bin/gpgconf
+ ```
+
+2. **Navigation**
+
+ - Expand nodes to explore detailed properties for modules or core components.
+
+ ![Global Register Table](https://image.cdn.bktus.com/i/2024/11/29/e4a74c1d-c81a-166f-abd8-4f3f4f92f4d0.webp)
+
+## Developing Custom Modules
+
+The **Module Controller** supports custom modules, allowing developers to extend
+GpgFrontend's functionality for specialized use cases. All modules adhere to a
+strict **C ABI (Application Binary Interface)** and are dynamically linked to
+the `libgpgfrontend_sdk` library.
+
+### Key Points for Developers
+
+1. **C ABI Compliance**
+
+ - Modules must be implemented using the C ABI to ensure compatibility across
+ all supported platforms (Windows, macOS, Linux).
+
+2. **Dynamic SDK Linking**
+
+ - Modules interact with GpgFrontend by linking dynamically to the
+ **libgpgfrontend_sdk** library. This library provides the necessary
+ interfaces for module initialization, data exchange, and runtime
+ interaction.
+
+3. **SDK Limitations**
+
+ - The current SDK API is still under development and may not cover all
+ potential use cases. Developers are encouraged to contact the project
+ maintainer for guidance or feature requests.
+
+4. **Getting Started**
+ - Place the compiled module file (`.dll`, `.dylib`, or `.so`) in the
+ `modules` directory. Use the **Show Mods Directory** button to locate this
+ directory.
+
+---
+
+## Tips for Managing Modules
+
+1. **Backup Before Changes**
+
+ - Always create a backup of the `modules` directory before making changes,
+ especially when adding or removing modules.
+
+2. **Regular Updates**
+
+ - Check for updates to both GpgFrontend and its modules to ensure
+ compatibility and access to the latest features.
+
+3. **Safe Removal**
+
+ - Follow the guidelines for deleting Integrated Modules based on your
+ platform to avoid accidental issues.
+
+4. **Use Global Register Table for Debugging**
+ - Advanced users can verify module configurations and GPG environment paths
+ through the **Global Register Table**.
+
+---
+
+## Example Module: Version Checking
+
+The **VersionChecking** module is a bundled example of how GpgFrontend uses
+modules to provide additional functionality.
+
+### Features:
+
+- Checks the current application version.
+- Displays release notes for new updates.
+- Notifies users when an upgrade is available.
+
+### Example Metadata:
+
+```
+- ID: com.bktus.gpgfrontend.module.version_checking
+- Version: 1.0.0
+- Auto Activate: True
+```
+
+### Global Register Table:
+
+```
+com.bktus.gpgfrontend.module.version_checking:
+ current_version: v2.1.5
+ need_upgrade: false
+ latest_version: v2.1.5
+```
+
+---
+
+By leveraging the **Module Controller**, users can customize and extend
+GpgFrontend to suit their needs. Developers interested in creating new modules
+are encouraged to experiment with the SDK and collaborate with the maintainer
+for additional API support. For more details, visit the [GpgFrontend Modules
+GitHub
+Repository](https://github.com/saturneric/GpgFrontend-Modules/blob/main/README.md).