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

From ZNC
Jump to navigation Jump to search
SiD (talk | contribs)
No edit summary
SiD (talk | contribs)
No edit summary
Tag: Manual revert
Line 2: Line 2:
{{External Module}}
{{External Module}}


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.
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.
 
== Getting the Code ==
The code for this module can be found [https://github.com/CryptoSiD/cservice-znc-module here].
 
== Compatibility ==
This module was compiled and tested with '''ZNC 1.10'''.


== Features ==
== Features ==
* Secure Login: Authenticate with UnderNet using your username, password, and optional 2FA/TOTP.
# **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.
# **2FA/TOTP Support**: Enhance security by adding time-based one-time passwords to your login process.
* LoC (Login on Connect): Log in to UnderNet automatically using the LoC feature.
# **LoC (Login on Connect)**: Seamlessly log in to UnderNet using their LoC feature. Learn more: [UnderNet LoC](https://www.undernet.org/loc/).
* Custom User Modes: Set user mode prefixes (<nowiki>-x!</nowiki>, <nowiki>+x!</nowiki>, or <nowiki>-!+x</nowiki>) during server connection.
# **Custom User Modes**: Set your preferred user mode prefix (`-x!`, `+x!`, or `-!+x`) during server connection.
* Encrypted Credentials: Passwords and 2FA secrets are stored securely using AES-256 encryption.
# **Encrypted Credentials**: Protect your password and 2FA secret with AES-256 encryption, ensuring that sensitive data is stored securely.
 
== Usage ==
{{Module arguments
| count = none
| extra = No additional arguments are required to load the module. Use commands to configure settings.}}
 
=== Commands ===
==== setusername ====
Sets the UnderNet username:
/msg *cservice setusername your_username
 
==== unsetusername ====
Removes the stored UnderNet username:
/msg *cservice unsetusername
 
==== setpassword ====
Sets the UnderNet password. The password is stored securely using AES-256 encryption:
/msg *cservice setpassword your_password
 
==== unsetpassword ====
Removes the stored UnderNet password:
/msg *cservice unsetpassword


==== setsecret ====
== Installation ==
Sets the 2FA/TOTP secret key. The secret is stored securely using AES-256 encryption:
1. Clone the repository:
/msg *cservice setsecret your_2fa_secret
  <pre>git clone https://github.com/your-repository/cservice-znc-module.git
  cd cservice-znc-module</pre>
 
2. Generate your `MASTER_KEY` for encrypting sensitive data (password and 2FA secret):
  <pre>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";</pre>


==== enable2fa ====
3. Build the module:
Enables 2FA/TOTP for secure logins:
  <pre>znc-buildmod cservice.cpp</pre>
/msg *cservice enable2fa


==== disable2fa ====
4. Place the compiled module in your ZNC modules directory:
Disables 2FA/TOTP:
  <pre>mv cservice.so ~/.znc/modules/</pre>
/msg *cservice disable2fa


==== setusermode ====
5. Load the module in ZNC:
Sets the user mode prefix for the server connection. Valid options are <nowiki>-x!</nowiki>, <nowiki>+x!</nowiki>, <nowiki>-!+x</nowiki>, or an empty string:
  <pre>/znc loadmod cservice</pre>
/msg *cservice setusermode +x!


==== showconfig ====
== Configuration ==
Displays the current configuration settings:
After loading the module, run the following command for help and configuration options:
/msg *cservice showconfig
<pre>/msg *cservice help</pre>
 
You can set:
=== Example Usage ===
- Your UnderNet username and password.
1. Set your username
- Your 2FA secret for TOTP.
  /msg *cservice setusername MyUser
- Enable or disable 2FA.
 
- Your preferred user mode (`-x!`, `+x!`, or `-!+x`).
2. Set your password: 
  /msg *cservice setpassword MyPassword
 
3. Set your TOTP secret: 
  /msg *cservice setsecret ABCDEFGHIJKLMNOPQRSTUV
 
4. Enable 2FA
  /msg *cservice enable2fa
 
5. View your current configuration: 
  /msg *cservice showconfig


=== 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:
a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6
<pre>a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6
 
Before entering the key into the module, you must:
Before entering the key into the module, you must:
1. Remove all spaces.
1. Remove all spaces.
2. Convert all lowercase letters to uppercase.
2. 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:
For example, if CService gives you `a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6`, you should enter it as:
A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6</pre>
 
This ensures compatibility with the module.
This ensures compatibility with the module.


You can use the following Linux command to reformat the key automatically:
You can use the following Linux command to reformat the key automatically:
bash
<pre>echo "a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6" | tr -d ' ' | tr '[:lower:]' '[:upper:]'</pre>
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.


=== Notes ===
=== Generating a Secure Encryption Key ===
* Always generate a secure encryption key (MASTER_KEY) before compiling the module. Use the following OpenSSL command:
To generate a secure 256-bit (32-byte) hexadecimal key, use the following OpenSSL command:
  openssl rand -hex 32
<pre>openssl rand -hex 32
  Replace MASTER_KEY in the source code with the generated key.
Replace the placeholder `MASTER_KEY` in the module code with the generated key:
const std::string MASTER_KEY = "REPLACE_WITH_YOUR_OWN_SECURE_KEY";</pre>


* The MASTER_KEY must be kept safe. If lost, the encrypted password and 2FA secret key will no longer work and you'll have to reconfigure it.
== Notes ==
 
* **Security Warning**: Always keep your `MASTER_KEY` private. If the key is exposed, encrypted data can be compromised. If the `MASTER_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:
* For changes to take effect, reload the module after updating configuration or code:
   /znc unloadmod cservice
   <pre>/znc unloadmod cservice
   /znc loadmod 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 CService ZNC module!
Enjoy secure and seamless logins with the `CService` ZNC module!
 
 
The section with rendering issue is:
 
=== 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:
1. Remove all spaces.
2. 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:
bash
echo "a1b2 c3d4 e5f6 g7h8 i9j0 k1l2 m3n4 o5p6" | tr -d ' ' | tr '[:lower:]' '[:upper:]'

Revision as of 20:05, 8 February 2025

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

  1. **Secure Login**: Authenticate securely with UnderNet using your username, password, and optional TOTP-based 2FA.
  2. **2FA/TOTP Support**: Enhance security by adding time-based one-time passwords to your login process.
  3. **LoC (Login on Connect)**: Seamlessly log in to UnderNet using their LoC feature. Learn more: [UnderNet LoC](https://www.undernet.org/loc/).
  4. **Custom User Modes**: Set your preferred user mode prefix (`-x!`, `+x!`, or `-!+x`) during server connection.
  5. **Encrypted Credentials**: Protect your password and 2FA secret with AES-256 encryption, ensuring that sensitive data is stored securely.

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

You can set: - Your UnderNet username and password. - Your 2FA secret for TOTP. - Enable or disable 2FA. - Your preferred user mode (`-x!`, `+x!`, or `-!+x`).

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:
1. Remove all spaces.
2. 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 the `MASTER_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!