Modulo:IP/dok
Daytoy ti subpanid ti dokumentasion para iti Modulo:IP. Aglaon daytoy kadagiti pakaammo ti panagusar, dagiti kategoria, ken dadduma a linaon a saan a paset ti kasisigud a panid ti modulo. |
Inus-usar daytoy a modulo kadagiti mensahe ti sistema. Dagiti panagbaliw iti daytoy ket gapuanan dagiti dagus a panagbaliw iti interface ti agar-aramat iti Wikipedia. Tapno maliklikan ti nakaro a pannakagulo, nasken nga umuna a masubokan dagiti ania man a panagbaliw kadagiti subpanid ti /pagipadasan wenno /pangsubok ti modulo, wenno iti bukodmo a pagipadasan. Mabalinton a mainayon dagiti nasubokan a panagbaliw iti maysa a panagurnos iti daytoy a modulo. Pangngaasi a pakitungtungan dagiti ania man a panagbaliw iti panid ti tungtungan sakbay nga isayangkat. |
Ti Modulo:IP iket maysa a libraria para iti panagobra kadagiti adres ti IP ken dagiti subnet. Makatengngel daytoy iti IPv4 ken IPv6. Mangieksport ti libraria kadagiti uppat a klase, IPAddress, Subnet, IPv4Collection, ken IPv6Collection.
Panangikarga ti libraria
urnosenlocal IP = require('Modulo:IP')
local IPAddress = IP.IPAddress
local Subnet = IP.Subnet
IPAddress
urnosenTi klase ti IPAddress ket inus-usar iti panagobra kadagiti bugbugtong nga adres ti IP. Ti agpartuat iti maysa a baro a banag ti IPAddress:
local ipAddress = IPAddress.new(ipString)
Ti agdumaduma nga ipString ket mabalin a maysa nga umiso nga adres ti IPv4 wenno IPv6.
Dagiti pagarigan:
local ipv4Address = IPAddress.new('1.2.3.4')
local ipv6Address = IPAddress.new('2001:db8::ff00:12:3456')
Dagiti banag ti IPAddress ket mabalin nga iyasping kadagiti mainaig nga operador:
-- Ekualidad
IPAddress.new('1.2.3.4') == IPAddress.new('1.2.3.4') -- true
IPAddress.new('1.2.3.4') == IPAddress.new('1.2.3.5') -- false
-- Basbassit ngem / ad-adu ngem
IPAddress.new('1.2.3.4') < IPAddress.new('1.2.3.5') -- true
IPAddress.new('1.2.3.4') > IPAddress.new('1.2.3.5') -- false
IPAddress.new('1.2.3.4') <= IPAddress.new('1.2.3.5') -- true
IPAddress.new('1.2.3.4') <= IPAddress.new('1.2.3.4') -- true
Mabalinmo nga usaren kaniada ti tostring (daytoy ket kapada ti panagusar ti getIP):
tostring(IPAddress.new('1.2.3.4')) -- "1.2.3.4"
tostring(IPAddress.new('2001:db8::ff00:12:3456')) -- "2001:db8::ff00:12:3456"
-- Naipangyababba dagiti napadakkel nga adres ti IPv6:
tostring(IPAddress.new('2001:db8:0:0:0:0:0:0')) -- "2001:db8::"
Mabalinmo pay nga i-concatenate kaniada:
IPAddress.new('1.2.3.4') .. ' foo' -- "1.2.3.4 foo"
IPAddress.new('1.2.3.4') .. IPAddress.new('5.6.7.8') -- "1.2.3.45.6.7.8"
Dagiti banag ti IPAddress ket addaan kadagiti nadumaduma a pamay-an, a naipalawag dita baba.
getIP
urnosenipAddress:getIP()
Mangisubli ti maysa a kuerdas a representasion ti adres ti IP. No mabalin maipangyababa dagiti adres ti IPv6.
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):getIP() -- "1.2.3.4"
IPAddress.new('2001:db8::ff00:12:3456'):getIP() -- "2001:db8::ff00:12:3456"
IPAddress.new('2001:db8:0:0:0:0:0:0'):getIP() -- "2001:db8::"
getVersion
urnosenipAddress:getVersion()
Mangisubli ti bersion iti naus-usar a protokol ti IP. Daytoy ket "IPv4" para kadagiti adres ti IPv4, ken "IPv6" para kadagiti adres ti IPv6.
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):getVersion() -- "IPv4"
IPAddress.new('2001:db8::ff00:12:3456'):getVersion() -- "IPv6"
isIPv4
urnosenipAddress:isIPv4()
Mangisubli ti "true" no ti adres ti IP ket maysa nga adres ti IPv4, ken "false" no saan.
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):isIPv4() -- true
IPAddress.new('2001:db8::ff00:12:3456'):isIPv4() -- false
isIPv6
urnosenipAddress:isIPv6()
Mangisubli ti "true" no ti adres ti IP ket maysa nga adres ti IPv6, ken "false" no saan.
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):isIPv6() -- false
IPAddress.new('2001:db8::ff00:12:3456'):isIPv6() -- true
isInSubnet
urnosenipAddress:isInSubnet(subnet)
Mangisubli ti "true" no ti adres ti IP ket adda iti subnet subnet, ken "false" no saan. subnet ken mabalin a maysa a banag ti Subnet wenno maysa a kuerdas ti CIDR].
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):isInSubnet('1.2.3.0/24') -- true
IPAddress.new('1.2.3.4'):isInSubnet('1.2.4.0/24') -- false
IPAddress.new('1.2.3.4'):isInSubnet(Subnet.new('1.2.3.0/24')) -- true
IPAddress.new('2001:db8::ff00:12:3456'):isInSubnet('2001:db8::ff00:12:0/112') -- true
getSubnet
urnosenipAddress:getSubnet(bitLength)
Mangisubli ti mays a banag ti subnet para iti subnet iti maysa a kaatiddog ti bit iti bitLength nga aglaon iti agdama nga IP. Ti parametro ti bitLength ket nasken a maysa nga integer iti pagbaetan ti 0 ken 32 para kadagiti afres ti IPv4, wenno maysa nga integer iti pagbaetaan ti 0 ken 128 para kadagiti adres ti IPv6.
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):getSubnet(24) -- Kapada iti Subnet.new('1.2.3.0/24')
getNextIP
urnosenipAddress:getNextIP()
Mangisubli iti baro a banag ti IPAddress a maipada iti agdama nga adres ti IP a maingkremento babaen ti maysa. Ti adres ti IPv4 ti "255.255.255.255" ket maipan iti agarup a "0.0.0.0", ken ti adres ti IPv6 iti "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" ket maipan iti agarup a "::".
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):getNextIP() -- Kapada iti IPAddress.new('1.2.3.5')
IPAddress.new('2001:db8::ff00:12:3456'):getNextIP() -- Kapada iti IPAddress.new('2001:db8::ff00:12:3457')
IPAddress.new('255.255.255.255'):getNextIP() -- Kapada iti IPAddress.new('0.0.0.0')
getPreviousIP
urnosenipAddress:getPreviousIP()
Mangisubli iti baro a banag ti IPAddress a maipada iti agdama nga adres ti IP a maingkremento babaen ti maysa. Ti adres ti IPv4 iti "0.0.0.0" ket maipan iti agarup a "255.255.255.255", ken ti adres ti IPv6 iti "::" ket maipan iti agarup a "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff".
Dagiti pagarigan:
IPAddress.new('1.2.3.4'):getPreviousIP() -- Kapada iti IPAddress.new('1.2.3.3')
IPAddress.new('2001:db8::ff00:12:3456'):getPreviousIP() -- Kapada iti IPAddress.new('2001:db8::ff00:12:3455')
IPAddress.new('0.0.0.0'):getPreviousIP() -- Kapada iti IPAddress.new('255.255.255.255')
Subnet
urnosenTi klase ti subnet ket inus-usar iti panagobra kadagiti subnetwork dagiti adres ti IPv4 wenno IPv6. Ti agpartuat iti baro a banag ti Subnet:
local subnet = Subnet.new(cidrString)
Ti cidrString ket nasken nga umiso nga IPv4 wenno kuerdas ti IPv6 CIDR.
Dagiti banag ti subnet ket mabalinda nga iyasping para iti ekualidad:
Subnet.new('1.2.3.0/24') == Subnet.new('1.2.3.0/24') -- true
Subnet.new('1.2.3.0/24') == Subnet.new('1.2.3.0/25') -- false
Subnet.new('1.2.3.0/24') == Subnet.new('2001:db8::ff00:12:0/112') -- false
Subnet.new('2001:db8::ff00:12:0/112') == Subnet.new('2001:db8::ff00:12:0/112') -- true
Subnet.new('2001:db8:0:0:0:0:0:0/112') == Subnet.new('2001:db8::/112') -- true
Mabalinmo nga usaren kaniada ti tostring (daytoy ket kapada ti getCIDR):
tostring(Subnet.new('1.2.3.0/24')) -- "1.2.3.0/24"
tostring(Subnet.new('2001:db8::ff00:12:0/112')) -- "2001:db8::ff00:12:0/112"
tostring(Subnet.new('2001:db8:0:0:0:0:0:0/112')) -- "2001:db8::/112"
Mabalinmo pay nga i-concatenate kaniada:
Subnet.new('1.2.3.0/24') .. ' foo' -- "1.2.3.0/24 foo"
Subnet.new('1.2.3.0/24') .. Subnet.new('4.5.6.0/24') -- "1.2.3.0/244.5.6.0/24"
Dagiti banag ti subnet ket addaan kadagiti nadumaduma a pamay-an, a naipalawag dita baba.
getPrefix
urnosensubnet:getPrefix()
Mangisubli ti maysa a banag ti IPAddress para iti kababaan nga adres ti IP iti subnet.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):getPrefix() -- Kapada iti IPAddress.new('1.2.3.0')
Subnet.new('2001:db8::ff00:12:0/112'):getPrefix() -- Kapada iti IPAddress.new('2001:db8::ff00:12:0')
getHighestIP
urnosensubnet:getHighestIP()
Mangisubli ti maysa a banag ti IPAddress para iti kangatuan nga adres ti IP iti subnet.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):getHighestIP() -- Kapada iti IPAddress.new('1.2.3.255')
Subnet.new('2001:db8::ff00:12:0/112'):getHighestIP() -- Kapada iti IPAddress.new('2001:db8::ff00:12:ffff')
getBitLength
urnosensubnet:getBitLength()
Mnagisubli ti kaatiddog ti bit iti subnet. Daytoy ket maysa nga integer iti pagbaetan ti 0 ken 32 para kadagiti adres ti IPv4, wenno maysa nga integer iti pagbaetan ti 0 ken 128 para kadagiti adres ti IPv6.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):getBitLength() -- 24
Subnet.new('2001:db8::ff00:12:0/112'):getBitLength() -- 112
getCIDR
urnosensubnet:getCIDR()
Mangisubli ti maysa a kuerdas ti representasion ti CIDR iti subnet.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):getCIDR() -- "1.2.3.0/24"
Subnet.new('2001:db8::ff00:12:0/112'):getCIDR() -- "2001:db8::ff00:12:0/112"
Subnet.new('2001:db8:0:0:0:0:0:0/112'):getCIDR() -- "2001:db8::/112"
getVersion
urnosensubnet:getVersion()
Mangisubli ti bersion ti inus-usar a protokol ti IP. Daytoy ket ti "IPv4" para kadagiti adres ti IPv4s, ken "IPv6" para kadagiti adres ti IPv6.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):getVersion() -- "IPv4"
Subnet.new('2001:db8::ff00:12:0/112'):getVersion() -- "IPv6"
isIPv4
urnosensubnet:isIPv4()
Mangisubli ti "true" no ti subnet ket agus-usar iti IPv4, ken "false" no saan.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):isIPv4() -- true
Subnet.new('2001:db8::ff00:12:0/112'):isIPv4() -- false
isIPv6
urnosensubnet:isIPv6()
Mangisubli ti "true" no ti subnet ket agus-usar iti IPv6, ken "false" no saan.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):isIPv6() -- false
Subnet.new('2001:db8::ff00:12:0/112'):isIPv6() -- true
containsIP
urnosensubnet:containsIP(ip)
Returns "true" no ti subnet ket aglaon ti adres ti IP ip, ken "false" no saan. ti ip ket mabalin a maysa a kuerdas ti adres ti IP, wenno maysa a banag ti IPAddress.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):containsIP('1.2.3.4') -- true
Subnet.new('1.2.3.0/24'):containsIP('1.2.4.4') -- false
Subnet.new('1.2.3.0/24'):containsIP(IPAddress.new('1.2.3.4')) -- true
Subnet.new('2001:db8::ff00:12:0/112'):containsIP('2001:db8::ff00:12:3456') -- true
overlapsSubnet
urnosensubnet:overlapsSubnet(subnet)
Mangisubli ti "true" no ti agdama a subnet ket tuonanna iti subnet, ken "false" no saan. Ti subnet ket mabalin a kuerdas ti CIDR wenno maysa a banag ti subnet.
Dagiti pagarigan:
Subnet.new('1.2.3.0/24'):overlapsSubnet('1.2.0.0/16') -- true
Subnet.new('1.2.3.0/24'):overlapsSubnet('1.2.12.0/22') -- false
Subnet.new('1.2.3.0/24'):overlapsSubnet(Subnet.new('1.2.0.0/16')) -- true
Subnet.new('2001:db8::ff00:12:0/112'):overlapsSubnet('2001:db8::ff00:0:0/96') -- true
walk
urnosensubnet:walk()
Ti pamay-an ti "walk" ket iteradona kadagiti amin a banag ti IPAddress iti subnet.
Dagiti pagarigan:
for ipAddress in Subnet.new('192.168.0.0/30'):walk() do
mw.log(tostring(ipAddress))
end
-- 192.168.0.0
-- 192.168.0.1
-- 192.168.0.2
-- 192.168.0.3
IPv4Collection
urnosenTi klase ti IPv4Collection ke inus-usar iti panagobra kadagiti nadumaduma nga adres ti IPv4 ken dagiti subnet ti IPv4. Ti agpartuat iti baro a banag ti IPv4Collection:
local collection = IPv4Collection.new()
Adda dagiti nadumaduma a pamay-an ti IPv4Collection, kas ti naipalawag dita baba.
getVersion
urnosencollection:getVersion()
Mangisubli ti kuerdas ti "IPv4".
addIP
urnosencollection:addIP(ip)
Manginayon ti maysa nga IP iti koleksion. Ti IP ket mabalin a maysa a kuerdas wenno maysa a banag ti IPAddress.
Dagiti pagarigan:
collection:addIP('1.2.3.4')
collection:addIP(IPAddress.new('1.2.3.4'))
Mabalin a pagsisilpuen daytoy a pamay-an:
collection:addIP('1.2.3.4'):addIP('5.6.7.8')
addSubnet
urnosencollection:addSubnet(subnet)
Manginayon ti maysa a subnet iti koleksion. Ti subnet ket mabalin a maysa a kuerdas ti CIDR wenno maysa a banag ti Subnet.
Dagiti pagarigan:
collection:addSubnet('1.2.3.0/24')
collection:addSubnet(Subnet.new('1.2.3.0/24'))
Mabalin a pagsisilpuen daytoy a pamay-an:
collection:addSubnet('1.2.0.0/24'):addSubnet('1.2.1.0/24')
addFromString
urnosencollection:addFromString(str)
Mangiyaon kadagiti ania man nga adres ti IPv4 ken dagiti subnet ti IPv4 CIDR manipud iti str ken inayon dagitoy iti koleksion. Saan a maikaskaso ti ania man a teksto a saan nga adres ti IPv4 wenno subnet ti CIDR .
Dagiti pagarigan:
collection:addFromString('Add some IPs and subnets: 1.2.3.4 1.2.3.5 2001:0::f foo 1.2.4.0/24')
Mabalin a pagsisilpuen daytoy a pamay-an:
collection:addFromString('foo 1.2.3.4'):addFromString('bar 5.6.7.8')
containsIP
urnosencollection:containsIP(ip)
Mangisubli ti "true" no ti koleksion ket aglaon ti nainaganan nga IP; no saan mangisubli ti "false". Ti parametro ti ip ket mabalin a maysa a kuerdas wenno maysa a banag ti IPAddress.
Dagiti pagarigan:
collection:containsIP('1.2.3.4')
collection:containsIP(IPAddress.new('1.2.3.4'))
getRanges
urnosencollection:getRanges()
Mangisubli ti maysa nga urnos ti rimpuok dagiti paris ti adres ti IP a kapada iti koleksion. Ti tunggal maysa a paris ti IP ket maysa a rimpuok a mangipresenta iti maysa nga agtutuloy a sakup dagiti adres ti IP manipud iti paris[1] aginggana iti paris[2] nga ingklusibo. Ti paris[1] ken paris[2] ket dagiti banag ti IPAddress.
Dagiti pagarigan:
collection:addSubnet('1.2.0.0/24')
collection:addSubnet('1.2.1.0/24')
collection:addSubnet('1.2.10.0/24')
mw.logObject(collection:getRanges())
-- Ilistana dagiti sumaganad:
-- table#1 {
-- table#2 {
-- 1.2.0.0,
-- 1.2.1.255,
-- },
-- table#3 {
-- 1.2.10.0,
-- 1.2.10.255,
-- },
-- }
overlapsSubnet
urnosencollection:overlapsSubnet(subnet)
Mangisubli ti "true", "obj" no ti subnet ket tuonanna daytoy a koleksion, a ti "obj" ket ti umuna nga IPAddress wenno banag ti Subnet a mangtuoon iti subnet. No saan, mangisubli ti "false". Ti subnet ket mabalin a maysa a kuerdas ti CIDR wenno maysa a banag ti Subnet.
Dagiti pagarigan:
collection:addIP('1.2.3.4')
collection:overlapsSubnet('1.2.3.0/24') -- true, IPAddress.new('1.2.3.4')
collection:overlapsSubnet('1.2.4.0/24') -- false
IPv6Collection
urnosenTi klase ti IPv6Collection ket inus-usar iti panagobra kadagiti nadumaduma a sabali nga adres ti IPv6 ken dagiti subnet ti IPv6. Dagiti banag ti IPv6Collection ket dagus nga analogo kadagiti banag ti IPv4Collection: aglaonda kadagiti isu met laeng a pamay-an ken agpadada met laeng nga agobra, ngem amin dagiti adres ti IP ken dagiti subnet a mainayon iti daytoy ket nasken nga IPv6, ken saan nga IPv4.
Ti agpartuat iti baro a banag ti IPv6Collection:
local collection = IPv6Collection.new()