dockerd-ac.lua 914 B

1234567891011121314151617181920
  1. require "luci.util"
  2. docker = require "luci.docker"
  3. uci = (require "luci.model.uci").cursor()
  4. dk = docker.new({socket_path = "/var/run/docker.sock"})
  5. if dk:_ping().code ~= 200 then return end
  6. containers_list = dk.containers:list({query = {all=true}}).body
  7. allowed_container = uci:get("dockerman", "local", "ac_allowed_container")
  8. if not allowed_container or next(allowed_container)==nil then return end
  9. allowed_ip = {}
  10. for i, v in ipairs(containers_list) do
  11. for ii, vv in ipairs(allowed_container) do
  12. if v.Id:sub(1,12) == vv and v.NetworkSettings and v.NetworkSettings.Networks and v.NetworkSettings.Networks.bridge and v.NetworkSettings.Networks.bridge.IPAddress then
  13. print(v.NetworkSettings.Networks.bridge.IPAddress)
  14. luci.util.exec("iptables -I DOCKER-MAN -d "..v.NetworkSettings.Networks.bridge.IPAddress.." -o docker0 -j RETURN")
  15. table.remove(allowed_container, ii)
  16. end
  17. end
  18. end