Автоопределение SHiNE-сервера по логину через PDA

This commit is contained in:
AidarKC
2026-06-16 16:32:33 +04:00
parent 3efa8bb7ee
commit f8a76bcd7f
19 changed files with 17426 additions and 48 deletions
+21 -1
View File
@@ -1,3 +1,6 @@
import { resolveShineServerByServerLogin } from './shine-server-resolver.js';
import { SOLANA_ENDPOINT_DEFAULT } from '../solana-programs.js';
function normalizeUrl(value) {
return String(value || '').trim();
}
@@ -103,10 +106,28 @@ function checkShineWs(url, timeoutMs = 7000) {
});
}
export async function resolveAndCheckShineServerLogin(serverLogin, solanaEndpoint) {
const resolved = await resolveShineServerByServerLogin({
serverLogin,
solanaEndpoint,
});
const available = await checkShineWs(resolved.wsUrl);
return {
status: available ? 'available' : 'unavailable',
serverLogin: resolved.serverLogin,
serverAddress: resolved.serverAddress,
httpBase: resolved.httpBase,
wsUrl: resolved.wsUrl,
};
}
export async function checkServerAvailabilityByKey(key, url) {
if (key === 'solanaServer') {
return (await checkSolanaRpc(url)) ? 'available' : 'unavailable';
}
if (key === 'shineServerLogin') {
return (await resolveAndCheckShineServerLogin(url, SOLANA_ENDPOINT_DEFAULT)).status;
}
if (key === 'shineServer') {
return (await checkShineWs(url)) ? 'available' : 'unavailable';
}
@@ -115,4 +136,3 @@ export async function checkServerAvailabilityByKey(key, url) {
}
return 'unavailable';
}