• Как типизировать reduce Typescript?

    @wsdgsogjspm
    const res = arr.reduce((acc, cur) => acc  + cur.counter, 0);
    Ответ написан
    Комментировать
  • Задачник по Javascript?

    Fqyeh29
    @Fqyeh29
    ↓ ИМХО ↓
    https://toster.ru/tag/javascript/questions
    Тут полно задач, за одно людям поможешь)
    Ответ написан
    Комментировать
  • Как повысить привилегии в системе без sudoers?

    @none7
    Для скрипта никак. Придётся писать обёртку на компилируемом языке, которая вызовет функции setuid и setgid, а затем запустит скрипт. На бинарник обёртки уже можно поставить флаг S как написал Александр Карабанов. Пример обёртки:
    #include <sys/types.h>
    #include <unistd.h>
    #include <stdlib.h>
    
    int main() {
      setuid(0);
      setgid(0);
      system("/path/to/script");
    }

    При этом естественно владельцем файла должен быть пользователь чьи права нужно получить. То есть для данной обёртки нужно выполнить chown root:root /path/to/file. Правда программа с UID==0, может установить себе любой UID. Вот так вот и работают sudo и su.
    Ответ написан
    1 комментарий
  • Как повысить привилегии в системе без sudoers?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    Попробуй setuid бит chmod u+s <filename>
    Исполняемый файл с установленым setuid битом запускается c правами владельца, если это root, то от root.
    Но это дыра в безопасности...

    Есть ещё setgid chmod g+s <filename> запускать от имени группы, возможно он подойдёт лучше. Или нет...

    Если не подойдёт, то удалить биты можно заменив "+" на "-":
    chmod u-s <filename>
    chmod g-s <filename>

    PS
    Собсвенно sudo и позволяет повышать привилегии за счёт установленного setuid бита:
    ~$ which sudo
    /usr/bin/sudo
    ~$ ls -alah /usr/bin/sudo
    -rwsr-xr-x 1 root root 163K янв 19  2021 /usr/bin/sudo
    ~$

    -rwsr-xr-x это и есть setuid бит.
    Ответ написан
    3 комментария
  • Как запомнить авторизацию сайта на nodejs?

    @nicolaa Автор вопроса
    К сожалению решить данную задачу через nightmare не получилось
    Решил с помощью puppeteer

    Пример - сохранение кук в фаил

    const puppeteer = require('puppeteer')
    const fs = require('fs');
    
    (async () => {
      const browser = await puppeteer.launch()
      const page = await browser.newPage()
    
      await page.goto('https://github.com/login')
    
      await page.type('#login_field', process.env.GITHUB_USER)
      await page.type('#password', process.env.GITHUB_PWD)
    
      await page.waitForSelector('.js-cookie-consent-reject')
      await page.click('.js-cookie-consent-reject')
      await page.$eval('[name="commit"]', (elem) => elem.click())
      await page.waitForNavigation()
    
      const cookies = await page.cookies()
      const cookieJson = JSON.stringify(cookies)
    
      fs.writeFileSync('cookies.json', cookieJson)
    
      await browser.close()
    })()


    Чтение кук из файла
    const puppeteer = require('puppeteer')
    const fs = require('fs');
    
    (async () => {
      const browser = await puppeteer.launch()
      const page = await browser.newPage()
    
      const cookies = fs.readFileSync('cookies.json', 'utf8')
    
      const deserializedCookies = JSON.parse(cookies)
      await page.setCookie(...deserializedCookies)
    
      await page.goto(`https://github.com/${process.env.GITHUB_USER}`)
    
      await browser.close()
    })()

    Статья
    Ответ написан
    Комментировать
  • Выдает ошибку при установке wp?

    DevMan
    @DevMan
    старая версия пхп, которая не понимает нового синтаксиса.
    Ответ написан
    1 комментарий
  • Как настроить доступ из интернета к нескольким сайтам на OpenServer?

    @alex_dark Автор вопроса
    Я поанализировал некоторые факты и ответ hap2yman:

    При обращении по адресу myIP/domain не открывается нужный сайт, хотя по логике должен, ведь для IP адреса dev.testN.ru это папка, которую он должен открывать.

    Если есть папка localhostи в ней различные сайты, то в адресной строке можно обращаться localhost/someSiteName- все открывается. А папка localhost соответствует адресу 127.0.0.1 (локальной машине)

    В документации openServerнаписано:

    Чтобы при наборе IP адреса вашего компьютера открывался определенный локальный сайт, можно создать алиас вида ваш_внешний_ip => ваш_локальный_домен


    ------
    Итак. Как сделать несколько сайтов на внешку:

    1) В папке domainsудаляем папку localhost(или изменяем её название, чтоб убрать ассоциацию с 127.0.0.1)

    2) В папке domainsсоздаем папку, которая послужит корнем для доменов. Например routeFolder. В ней уже будут лежать папки dev.test1.ru, dev.test2.ru, dev.test3.ru и т.д.

    3) В настройках -> вкладка "Сервер" -> IP-адрес сервера ставим наш внешний IP

    e2c68b8f38b947ceae2aed8948c8d576.jpg

    4) В настройках -> вкладка "Алиасы" -> привязываем IP к папке `routeFolder` и сохраняем настройку

    ba6086d760874e188a463e05b1b097c8.jpg

    Всё, перезагружаем сервер.

    P.S. Не забываем открыть порт для входа с внешки.

    P.P.S. При наборе IP будет видна папка с нашими доменами. Чтоб их не было видно, можно в корень (т.е. в папку routeFolder) кинуть .htaccess, который будет автоматом с корня перенаправлять, например, на сайт№1
    Ответ написан
    Комментировать