To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.
CService: Difference between revisions
No edit summary |
m Fix casing mistake in previous change. Tag: Manual revert |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
{{External Module}} | {{External Module}} | ||
The | The <code>CService</code> ZNC module provides secure login functionality for X on UnderNet, including support for 2FA/TOTP authentication and LoC (Login on Connect). It allows users to configure login details, enable/disable 2FA, and specify user modes. Sensitive data, such as passwords and 2FA secrets, are encrypted using AES-256 encryption for enhanced security. | ||
== Features == | == Features == | ||
# | # '''Secure Login''': Authenticate securely with UnderNet using your username, password, and optional TOTP-based 2FA. | ||
# | # '''2FA/TOTP Support''': Enhance security by adding time-based one-time passwords to your login process. | ||
# | # '''LoC (Login on Connect)''': Seamlessly log in to UnderNet using their LoC feature. Learn more: [https://www.undernet.org/loc/ UnderNet LoC]. | ||
# | # '''Custom User Modes''': Set your preferred user mode prefix (<code>-x!</code>, <code>+x!</code>, or <code>-!+x</code>) during server connection. | ||
# | # '''Encrypted Credentials''': Protect your password and 2FA secret with AES-256 encryption, ensuring that sensitive data is stored securely. | ||
# '''Clear Configuration''': Delete all stored credentials and settings with the <code>clearconfig</code> command. | |||
== Installation == | == Installation == | ||
1. Clone the repository: | 1. Clone the repository: | ||
<pre>git clone https://github.com/your-repository/cservice-znc-module.git | |||
cd cservice-znc-module</pre> | |||
2. Generate your | 2. Generate your <code>MASTER_KEY</code> for encrypting sensitive data (password and 2FA secret): | ||
<pre>openssl rand -hex 32</pre> | <pre>openssl rand -hex 32</pre> | ||
Replace the placeholder | Replace the placeholder <code>MASTER_KEY</code> in the module code with the generated key: | ||
<pre>const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";</pre> | <pre>const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";</pre> | ||
3. Build the module: | 3. Build the module: | ||
<pre>znc-buildmod cservice.cpp</pre> | |||
4. Place the compiled module in your ZNC modules directory: | 4. Place the compiled module in your ZNC modules directory: | ||
<pre>mv cservice.so ~/.znc/modules/</pre> | |||
5. Load the module in ZNC: | 5. Load the module in ZNC: | ||
<pre>/znc loadmod cservice</pre> | |||
== Configuration == | == Configuration == | ||
After loading the module, run the following command for help and configuration options: | After loading the module, run the following command for help and configuration options: | ||
<pre>/msg *cservice help</pre> | <pre>/msg *cservice help</pre> | ||
=== Commands === | |||
* '''<code>setusername <username></code>''' | |||
Set your UnderNet username. | |||
Example: <pre>/msg *cservice setusername myusername</pre> | |||
* '''<code>setpassword <password></code>''' | |||
Set your UnderNet password (stored encrypted). | |||
Example: <pre>/msg *cservice setpassword mypassword</pre> | |||
* '''<code>setsecret <secret></code>''' | |||
Set your 2FA/TOTP secret key (stored encrypted). Ensure the secret is formatted correctly (uppercase with no spaces). | |||
Example: <pre>/msg *cservice setsecret A1B2C3D4E5F6G7H8</pre> | |||
* '''<code>enable2fa</code>''' | |||
Enable 2FA/TOTP authentication. | |||
Example: <pre>/msg *cservice enable2fa</pre> | |||
* '''<code>disable2fa</code>''' | |||
Disable 2FA/TOTP authentication. | |||
Example: <pre>/msg *cservice disable2fa</pre> | |||
* '''<code>setusermode <mode></code>''' | |||
Define the user mode prefix (<code>-x!</code>, <code>+x!</code>, or <code>-!+x</code>) used by LoC during server connection. | |||
Example: <pre>/msg *cservice setusermode +x!</pre> | |||
* '''<code>showconfig</code>''' | |||
Show the current configuration settings (username, 2FA status, user mode, etc.). | |||
Example: <pre>/msg *cservice showconfig</pre> | |||
* '''<code>clearconfig</code>''' | |||
Delete all stored configuration data (username, password, 2FA secret, etc.). | |||
Example: <pre>/msg *cservice clearconfig</pre> | |||
=== Formatting the 2FA Secret Key === | === Formatting the 2FA Secret Key === | ||
The CService website provides the 2FA secret key in eight groups separated by spaces, like this: | The CService website provides the 2FA secret key in eight groups separated by spaces, like this: | ||
<pre>a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6 | <pre>a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6</pre> | ||
Before entering the key into the module, you must: | Before entering the key into the module, you must: | ||
# Remove all spaces. | |||
# Convert all lowercase letters to uppercase. | |||
For example, if CService gives you | For example, if CService gives you <code>a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6</code>, you should enter it as: | ||
A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6</pre> | <pre>A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6</pre> | ||
This ensures compatibility with the module. | This ensures compatibility with the module. | ||
Line 54: | Line 83: | ||
== Password and 2FA Encryption == | == Password and 2FA Encryption == | ||
This module encrypts sensitive data (password and 2FA secret) using AES-256 encryption. Each user must generate their own encryption key (referred to as | This module encrypts sensitive data (password and 2FA secret) using AES-256 encryption. Each user must generate their own encryption key (referred to as <code>MASTER_KEY</code>) and update the module code before building it. | ||
=== Generating a Secure Encryption Key === | === Generating a Secure Encryption Key === | ||
To generate a secure 256-bit (32-byte) hexadecimal key, use the following OpenSSL command: | To generate a secure 256-bit (32-byte) hexadecimal key, use the following OpenSSL command: | ||
<pre>openssl rand -hex 32 | <pre>openssl rand -hex 32</pre> | ||
Replace the placeholder | Replace the placeholder <code>MASTER_KEY</code> in the module code with the generated key: | ||
const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";</pre> | <pre>const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";</pre> | ||
== Notes == | == Notes == | ||
* | * '''Security Warning''': Always keep your <code>MASTER_KEY</code> private. If the key is exposed, encrypted data can be compromised. If the <code>MASTER_KEY</code> is lost, the encrypted password and 2FA secret will no longer work, and you will have to reconfigure the module. | ||
* For changes to take effect, reload the module after updating configuration or code: | * For changes to take effect, reload the module after updating configuration or code: | ||
<pre>/znc unloadmod cservice | |||
/znc loadmod cservice</pre> | |||
== See Also == | == See Also == | ||
For more information on UnderNet's Login on Connect (LoC) feature, visit [https://www.undernet.org/loc/ UnderNet LoC]. | For more information on UnderNet's Login on Connect (LoC) feature, visit [https://www.undernet.org/loc/ UnderNet LoC]. | ||
Enjoy secure and seamless logins with the | Enjoy secure and seamless logins with the <code>CService</code> ZNC module! |
Latest revision as of 10:50, 17 February 2025
This is an external module. Please note that it may or may not work with the current release (1.9.1). This module is not included in the default ZNC installation, and you will need to manually compile it before you can load this module. Contact the author if you have any questions, but feel free to ask in #znc on Libera.Chat. Someone might be able to help you there. |
The CService
ZNC module provides secure login functionality for X on UnderNet, including support for 2FA/TOTP authentication and LoC (Login on Connect). It allows users to configure login details, enable/disable 2FA, and specify user modes. Sensitive data, such as passwords and 2FA secrets, are encrypted using AES-256 encryption for enhanced security.
Features
- Secure Login: Authenticate securely with UnderNet using your username, password, and optional TOTP-based 2FA.
- 2FA/TOTP Support: Enhance security by adding time-based one-time passwords to your login process.
- LoC (Login on Connect): Seamlessly log in to UnderNet using their LoC feature. Learn more: UnderNet LoC.
- Custom User Modes: Set your preferred user mode prefix (
-x!
,+x!
, or-!+x
) during server connection. - Encrypted Credentials: Protect your password and 2FA secret with AES-256 encryption, ensuring that sensitive data is stored securely.
- Clear Configuration: Delete all stored credentials and settings with the
clearconfig
command.
Installation
1. Clone the repository:
git clone https://github.com/your-repository/cservice-znc-module.git cd cservice-znc-module
2. Generate your MASTER_KEY
for encrypting sensitive data (password and 2FA secret):
openssl rand -hex 32
Replace the placeholder MASTER_KEY
in the module code with the generated key:
const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";
3. Build the module:
znc-buildmod cservice.cpp
4. Place the compiled module in your ZNC modules directory:
mv cservice.so ~/.znc/modules/
5. Load the module in ZNC:
/znc loadmod cservice
Configuration
After loading the module, run the following command for help and configuration options:
/msg *cservice help
Commands
setusername <username>
Set your UnderNet username.
Example:
/msg *cservice setusername myusername
setpassword <password>
Set your UnderNet password (stored encrypted).
Example:
/msg *cservice setpassword mypassword
setsecret <secret>
Set your 2FA/TOTP secret key (stored encrypted). Ensure the secret is formatted correctly (uppercase with no spaces).
Example:
/msg *cservice setsecret A1B2C3D4E5F6G7H8
enable2fa
Enable 2FA/TOTP authentication.
Example:
/msg *cservice enable2fa
disable2fa
Disable 2FA/TOTP authentication.
Example:
/msg *cservice disable2fa
setusermode <mode>
Define the user mode prefix (-x!
,+x!
, or-!+x
) used by LoC during server connection.
Example:
/msg *cservice setusermode +x!
showconfig
Show the current configuration settings (username, 2FA status, user mode, etc.).
Example:
/msg *cservice showconfig
clearconfig
Delete all stored configuration data (username, password, 2FA secret, etc.).
Example:
/msg *cservice clearconfig
Formatting the 2FA Secret Key
The CService website provides the 2FA secret key in eight groups separated by spaces, like this:
a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6
Before entering the key into the module, you must:
- Remove all spaces.
- Convert all lowercase letters to uppercase.
For example, if CService gives you a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6
, you should enter it as:
A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
This ensures compatibility with the module.
You can use the following Linux command to reformat the key automatically:
echo "a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6" | tr -d ' ' | tr '[:lower:]' '[:upper:]'
Password and 2FA Encryption
This module encrypts sensitive data (password and 2FA secret) using AES-256 encryption. Each user must generate their own encryption key (referred to as MASTER_KEY
) and update the module code before building it.
Generating a Secure Encryption Key
To generate a secure 256-bit (32-byte) hexadecimal key, use the following OpenSSL command:
openssl rand -hex 32
Replace the placeholder MASTER_KEY
in the module code with the generated key:
const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";
Notes
- Security Warning: Always keep your
MASTER_KEY
private. If the key is exposed, encrypted data can be compromised. If theMASTER_KEY
is lost, the encrypted password and 2FA secret will no longer work, and you will have to reconfigure the module. - For changes to take effect, reload the module after updating configuration or code:
/znc unloadmod cservice /znc loadmod cservice
See Also
For more information on UnderNet's Login on Connect (LoC) feature, visit UnderNet LoC.
Enjoy secure and seamless logins with the CService
ZNC module!