mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-03-30 23:03:03 -07:00
BE+FE: prefix|base64 implementation for SMTP_PASS #1337
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
This commit is contained in:
@@ -698,11 +698,17 @@ function applyTransformers(val, transformers) {
|
||||
}
|
||||
break;
|
||||
case "base64":
|
||||
// Implement base64 logic
|
||||
// Implement base64 logic
|
||||
if (!isBase64(val)) {
|
||||
val = btoa(val);
|
||||
}
|
||||
break;
|
||||
case "prefix|base64":
|
||||
// Implement base64 logic w/ prefix
|
||||
if (val.startsWith("base64:") == false) {
|
||||
val = "base64:" + btoa(val);
|
||||
}
|
||||
break;
|
||||
case "name|base64":
|
||||
// // Implement base64 logic
|
||||
// if (!isBase64(val)) {
|
||||
@@ -736,6 +742,19 @@ function reverseTransformers(val, transformers) {
|
||||
val = atob(val);
|
||||
}
|
||||
break;
|
||||
case "prefix|base64":
|
||||
// Implement base64 decoding logic
|
||||
if (val.startsWith("base64:")) {
|
||||
let encodedPart = val.slice(7); // remove "base64:"
|
||||
if (isBase64(encodedPart)) {
|
||||
val = atob(encodedPart);
|
||||
} else {
|
||||
console.log("Prefix exists but not valid Base64");
|
||||
}
|
||||
} else {
|
||||
console.error("Not Base64-prefixed");
|
||||
}
|
||||
break;
|
||||
case "name|base64":
|
||||
// Implement base64 decoding logic
|
||||
if (isBase64(val)) {
|
||||
|
||||
@@ -534,7 +534,7 @@
|
||||
{
|
||||
"elementType": "input",
|
||||
"elementOptions": [{ "type": "password" }],
|
||||
"transformers": ["base64"]
|
||||
"transformers": ["prefix|base64"]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -64,8 +64,8 @@ def main():
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_SERVER: ', get_setting_value("SMTP_SERVER")])
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_PORT: ', get_setting_value("SMTP_PORT")])
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_SKIP_LOGIN: ', get_setting_value("SMTP_SKIP_LOGIN")])
|
||||
# mylog('verbose', [f'[{pluginName}] SMTP_USER: ', get_setting_value("SMTP_USER")])
|
||||
# mylog('verbose', [f'[{pluginName}] SMTP_PASS: ', get_setting_value("SMTP_PASS")])
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_USER: ', get_setting_value("SMTP_USER")])
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_PASS: ', get_setting_value("SMTP_PASS")])
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_SKIP_TLS: ', get_setting_value("SMTP_SKIP_TLS")])
|
||||
mylog('verbose', [f'[{pluginName}] SMTP_FORCE_SSL: ', get_setting_value("SMTP_FORCE_SSL")])
|
||||
# mylog('verbose', [f'[{pluginName}] SMTP_REPORT_TO: ', get_setting_value("SMTP_REPORT_TO")])
|
||||
|
||||
@@ -388,17 +388,43 @@ def updateSubnets(scan_subnets):
|
||||
# -------------------------------------------------------------------------------
|
||||
# Reverse transformed values if needed
|
||||
def reverseTransformers(val, transformers):
|
||||
# Function to apply transformers to a single value
|
||||
"""
|
||||
Reverse applied transformers on a value or list of values.
|
||||
|
||||
This function iterates through a list of transformers and reverses
|
||||
them where possible. Currently supports:
|
||||
|
||||
- "base64": Decodes a Base64-encoded string prefixed with 'base64:'.
|
||||
- "sha256": Logs a warning since SHA256 is irreversible.
|
||||
|
||||
Args:
|
||||
val (str or list): The value or list of values to reverse-transform.
|
||||
transformers (list): List of transformers applied in order.
|
||||
|
||||
Returns:
|
||||
str or list: The value(s) after reversing applicable transformers.
|
||||
|
||||
Notes:
|
||||
- If 'val' is a list, each element is processed individually.
|
||||
- Invalid Base64 strings are returned unchanged.
|
||||
- Transformers are applied in the order given in the list.
|
||||
"""
|
||||
def reverse_transformers(value, transformers):
|
||||
for transformer in transformers:
|
||||
if transformer == "base64":
|
||||
if isinstance(value, str):
|
||||
value = base64.b64decode(value).decode("utf-8")
|
||||
elif transformer == "prefix|base64":
|
||||
if isinstance(value, str) and value.startswith("base64:"):
|
||||
encoded_part = value[7:]
|
||||
value = base64.b64decode(encoded_part).decode("utf-8")
|
||||
else:
|
||||
mylog("none", ["[reverseTransformers] invalid base64 value format. Try re-saving Settings."])
|
||||
elif transformer == "sha256":
|
||||
mylog("none", ["[reverseTransformers] sha256 is irreversible"])
|
||||
# Add more transformer handling here if needed
|
||||
return value
|
||||
|
||||
# Check if the value is a list
|
||||
if isinstance(val, list):
|
||||
return [reverse_transformers(item, transformers) for item in val]
|
||||
else:
|
||||
|
||||
@@ -727,6 +727,8 @@ replacements = {
|
||||
r"\bREPORT_TO\b": "SMTP_REPORT_TO",
|
||||
r"\bSYNC_api_token\b": "API_TOKEN",
|
||||
r"\bAPI_TOKEN=\'\'": f"API_TOKEN='t_{generate_random_string(20)}'",
|
||||
# Detect SMTP_PASS='anything' BUT not starting with base64:
|
||||
r"SMTP_PASS='(?!base64:)([^']*)'": r"SMTP_PASS='base64:\1'",
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user