This commit is contained in:
Shahrad Elahi 2024-02-15 11:27:22 +03:30
parent 5edb9b46c0
commit 6ee2435ba8
2 changed files with 23 additions and 37 deletions

View File

@ -16,12 +16,13 @@ export function isBetween(v: any, n1: number, n2: number): boolean {
return n1 <= n && n >= n2; return n1 <= n && n >= n2;
} }
export function isJson(str: string | object): boolean { export function isJson(data: any): boolean {
if (typeof str === 'object' && isObject(str)) { if (typeof data !== 'string') {
return true; return false;
} }
try { try {
return typeof str === 'string' && JSON.parse(str); return !!JSON.parse(data);
} catch (ex) { } catch (ex) {
return false; return false;
} }

View File

@ -130,15 +130,11 @@ export class WGServer {
return true; return true;
} }
client.lset( client.lset(WG_SEVER_PATH, index, {
WG_SEVER_PATH, ...deepmerge(server, update),
index, peers: update?.peers || server?.peers || [],
JSON.stringify({ updatedAt: new Date().toISOString(),
...deepmerge(server, update), });
peers: update?.peers || server?.peers || [],
updatedAt: new Date().toISOString(),
}),
);
return true; return true;
} }
@ -258,14 +254,10 @@ class WGPeers {
return true; return true;
} }
client.lset( client.lset(WG_SEVER_PATH, index, {
WG_SEVER_PATH, ...server,
index, peers: [...server.peers, peer],
JSON.stringify({ });
...server,
peers: [...server.peers, peer],
}),
);
if (server.status === 'up') { if (server.status === 'up') {
await this.server.stop(); await this.server.stop();
@ -285,14 +277,10 @@ class WGPeers {
return true; return true;
} }
client.lset( client.lset(WG_SEVER_PATH, index, {
WG_SEVER_PATH, ...server,
index, peers: server.peers.filter((p) => p.publicKey !== publicKey),
JSON.stringify({ });
...server,
peers: server.peers.filter((p) => p.publicKey !== publicKey),
}),
);
const peerIndex = peers.findIndex((p) => p.includes(`PublicKey = ${publicKey}`)); const peerIndex = peers.findIndex((p) => p.includes(`PublicKey = ${publicKey}`));
if (peerIndex === -1) { if (peerIndex === -1) {
@ -329,7 +317,7 @@ class WGPeers {
return deepmerge(p, update); return deepmerge(p, update);
}); });
client.lset(WG_SEVER_PATH, index, JSON.stringify({ ...server, peers: updatedPeers })); client.lset(WG_SEVER_PATH, index, { ...server, peers: updatedPeers });
await this.storePeers(publicKey, updatedPeers); await this.storePeers(publicKey, updatedPeers);
if (server.status === 'up') { if (server.status === 'up') {
@ -505,10 +493,7 @@ async function syncServers(): Promise<boolean> {
client.del(WG_SEVER_PATH); client.del(WG_SEVER_PATH);
// save all servers to redis // save all servers to redis
client.lpush( client.lpush(WG_SEVER_PATH, servers);
WG_SEVER_PATH,
servers.map((s) => JSON.stringify(s)),
);
return true; return true;
} }
@ -587,7 +572,7 @@ export async function generateWgServer(config: GenerateWgServerParams): Promise<
// save server config // save server config
logger.debug('WireGuard: GenerateWgServer: saving server to storage'); logger.debug('WireGuard: GenerateWgServer: saving server to storage');
logger.debug(server); logger.debug(server);
client.lpush(WG_SEVER_PATH, JSON.stringify(server)); client.lpush(WG_SEVER_PATH, server);
const CONFIG_PATH = resolveConfigPath(confId); const CONFIG_PATH = resolveConfigPath(confId);
@ -685,7 +670,7 @@ export function getServers(): WgServer[] {
export async function findServerIndex(id: string): Promise<number | undefined> { export async function findServerIndex(id: string): Promise<number | undefined> {
let index = 0; let index = 0;
const servers = await getServers(); const servers = getServers();
for (const s of servers) { for (const s of servers) {
if (s.id === id) { if (s.id === id) {
return index; return index;
@ -699,7 +684,7 @@ export async function findServer(
id: string | undefined, id: string | undefined,
hash?: string, hash?: string,
): Promise<WgServer | undefined> { ): Promise<WgServer | undefined> {
const servers = await getServers(); const servers = getServers();
return id return id
? servers.find((s) => s.id === id) ? servers.find((s) => s.id === id)
: hash && isJson(hash) : hash && isJson(hash)