25 lines
1 KiB
Lua
25 lines
1 KiB
Lua
|
|
local lang = jarvis.context.language
|
||
|
|
|
||
|
|
local ps = [[
|
||
|
|
$lan = (Get-NetIPAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue |
|
||
|
|
Where-Object { $_.PrefixOrigin -eq 'Dhcp' -or $_.PrefixOrigin -eq 'Manual' } |
|
||
|
|
Where-Object { $_.IPAddress -notmatch '^127\.' -and $_.IPAddress -notmatch '^169\.254\.' } |
|
||
|
|
Select-Object -First 1).IPAddress
|
||
|
|
if (-not $lan) { $lan = '(none)' }
|
||
|
|
$wan = try { (Invoke-RestMethod -Uri 'https://api.ipify.org?format=json' -TimeoutSec 5).ip } catch { 'unavailable' }
|
||
|
|
Write-Output ('LAN ' + $lan + ' WAN ' + $wan)
|
||
|
|
]]
|
||
|
|
local res = jarvis.system.exec(string.format('powershell -NoProfile -Command "%s"', ps:gsub('"', '\\"')))
|
||
|
|
local out = (res.stdout or ""):gsub("[\r\n]+$", "")
|
||
|
|
|
||
|
|
if out == "" then
|
||
|
|
jarvis.audio.play_error()
|
||
|
|
return { chain = false }
|
||
|
|
end
|
||
|
|
|
||
|
|
jarvis.system.notify("IP", out)
|
||
|
|
local say = out:gsub("LAN", lang == "ru" and "Локальный" or "LAN"):gsub("WAN", lang == "ru" and ". Внешний" or ". WAN")
|
||
|
|
jarvis.speak(say, { lang = lang })
|
||
|
|
jarvis.audio.play_ok()
|
||
|
|
return { chain = false }
|