Skip to content

Commit

Permalink
Revert "Enhancement: encode uri params for synology proxy (#4414)"
Browse files Browse the repository at this point in the history
This reverts commit 93c18a8.

Revert "Fix synology param encoding"

This reverts commit bc3adf1.

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

This reverts commit 30fd42d.
  • Loading branch information
shamoon committed Dec 18, 2024
1 parent 30fd42d commit d0eabf7
Showing 1 changed file with 9 additions and 15 deletions.
24 changes: 9 additions & 15 deletions src/utils/proxy/handlers/synology.js
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand All @@ -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 })];
}

Expand All @@ -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 {
Expand All @@ -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);
Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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) {
Expand All @@ -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);
}
Expand Down

0 comments on commit d0eabf7

Please sign in to comment.