Revert "Enhancement: encode uri params for synology proxy (#4414)"

This reverts commit 93c18a8077d13c84863afcccf78306f63cd9fff5.

Revert "Fix synology param encoding"

This reverts commit bc3adf1f2a5dfdde6c87b8f72341acb5afe7f514.

Revert "I think this will actually fix the synology handler"

This reverts commit 30fd42dba41141a9c490e78a56933a8a22047b18.
This commit is contained in:
shamoon 2024-12-18 11:47:28 -08:00
parent 30fd42dba4
commit d0eabf7adb

View File

@ -8,14 +8,13 @@ import widgets from "widgets/widgets";
const INFO_ENDPOINT = "{url}/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query";
const AUTH_ENDPOINT =
"{url}/webapi/{path}?api=SYNO.API.Auth&version={maxVersion}&session=DownloadStation&format=cookie&method=login&{authParams}";
"{url}/webapi/{path}?api=SYNO.API.Auth&version={maxVersion}&method=login&account={username}&passwd={password}&session=DownloadStation&format=cookie";
const AUTH_API_NAME = "SYNO.API.Auth";
const proxyName = "synologyProxyHandler";
const logger = createLogger(proxyName);
async function login(loginUrl) {
logger.debug("Attempting login via %s", loginUrl);
const [status, contentType, data] = await httpProxy(loginUrl);
if (status !== 200) {
return [status, contentType, data];
@ -33,8 +32,8 @@ async function login(loginUrl) {
404 Failed to authenticate 2-step verification code
*/
let message = "Authentication failed.";
if (json?.error?.code && parseInt(json?.error?.code, 10) >= 403) message += " 2FA enabled.";
logger.error("Unable to login. Code: %d", json?.error?.code);
if (json?.error?.code >= 403) message += " 2FA enabled.";
logger.warn("Unable to login. Code: %d", json?.error?.code);
return [401, "application/json", JSON.stringify({ code: json?.error?.code, message })];
}
@ -51,7 +50,6 @@ async function getApiInfo(serviceWidget, apiName, serviceName) {
const infoUrl = formatApiCall(INFO_ENDPOINT, serviceWidget);
// eslint-disable-next-line no-unused-vars
const [status, contentType, data] = await httpProxy(infoUrl);
logger.debug("Received %d from Info endpoint %s", status, infoUrl);
if (status === 200) {
try {
@ -74,16 +72,12 @@ async function getApiInfo(serviceWidget, apiName, serviceName) {
}
async function handleUnsuccessfulResponse(serviceWidget, url, serviceName) {
logger.debug(`Attempting login to ${serviceWidget.type}`);
// eslint-disable-next-line no-unused-vars
const [apiPath, maxVersion] = await getApiInfo(serviceWidget, AUTH_API_NAME, serviceName);
const authParams = new URLSearchParams({ account: serviceWidget.username, passwd: serviceWidget.password });
const authArgs = {
path: apiPath ?? "entry.cgi",
maxVersion: maxVersion ?? 7,
url: serviceWidget.url,
authParams: authParams.toString(),
};
const authArgs = { path: apiPath ?? "entry.cgi", maxVersion: maxVersion ?? 7, ...serviceWidget };
const loginUrl = formatApiCall(AUTH_ENDPOINT, authArgs);
const [status, contentType, data] = await login(loginUrl);
@ -132,7 +126,7 @@ function toError(url, synologyError) {
error.error = synologyError.message ?? "Unknown error.";
break;
}
logger.error(`Unable to call ${url}. code: ${code}, error: ${error.error}.`);
logger.warn(`Unable to call ${url}. code: ${code}, error: ${error.error}.`);
return error;
}
@ -160,7 +154,7 @@ export default async function synologyProxyHandler(req, res) {
apiMethod: mapping.apiMethod,
cgiPath,
maxVersion,
url: serviceWidget.url,
...serviceWidget,
});
let [status, contentType, data] = await httpProxy(url);
if (status !== 200) {
@ -170,7 +164,7 @@ export default async function synologyProxyHandler(req, res) {
let json = asJson(data);
if (json?.success !== true) {
logger.debug(`Request failed. Attempting login to ${serviceWidget.type}`);
logger.debug(`Attempting login to ${serviceWidget.type}`);
[status, contentType, data] = await handleUnsuccessfulResponse(serviceWidget, url, service);
json = asJson(data);
}