Задать вопрос
RomanDillerNsk
@RomanDillerNsk
JavaScript

Как взаимодействовать с Wireguard через nodejs?

Коллеги доброго времени суток. Суть следующая.

Озадачился вопросом взаимодействия с wireguard через самописные скрипты. Wireguard стоит локально, конфиги ручками делаю, все вроде хорошо. Но захотелось сделать управление через телеграм бота.

Подскажите пути реализации, кто сталкивался!) заранее благодарю.
  • Вопрос задан
  • 195 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Node.js для backend-разработки
    6 месяцев
    Далее
  • Академия Эдюсон
    Node.js-разработчик
    8 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Frontend-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@lrmpsm53
В принципе ты можешь выполнять команды в рез child_process
Ответ написан
Комментировать
Psychosynthesis
@Psychosynthesis
Fullstack developer and radio engineer
Мы писали для своей сети что-то такое: https://github.com/Gratio-tech/WireguardControl

Немного костыльно - приходится WG дёргать через вот spawn:

import { spawn } from 'child_process';

export const executeSingleCommand = (command: string, args: string[] = []): Promise<string> => {
  return new Promise((resolve, reject) => {
    const childProcess = spawn(command, args);
    let stdoutData = '';
    let stderrData = '';

    childProcess.stdout.on('data', data => {
      stdoutData += data.toString();
    });

    childProcess.stderr.on('data', data => {
      stderrData += data.toString();
    });

    childProcess.on('close', code => {
      if (code !== 0) {
        reject(new Error(`executeSingleCommand failed with code ${code}: ${stderrData}`));
      } else {
        resolve(stdoutData.trim());


Но в целом всё неплохо работает. Единственный минус - приходится перезагружать руками после добавления клиента. Там как-то гиморно это решается по другому.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы