|
@@ -2,21 +2,34 @@ class Account < ApplicationRecord
|
|
|
def self.GetFreeIPAddr
|
|
|
ipaddr_busy = Hash.new
|
|
|
|
|
|
- Account.all.each do |account|
|
|
|
+ Account.find_each do |account|
|
|
|
ipaddr_busy[account.ipaddr] = true
|
|
|
end
|
|
|
|
|
|
require 'ipaddr'
|
|
|
|
|
|
- first = IPAddr.new("192.168.127.0").to_i
|
|
|
+ first = IPAddr.new("192.168.127.2").to_i # .0 - net; .1 - server, .2 - client, .3 - broadcast
|
|
|
last = IPAddr.new("192.168.255.254").to_i
|
|
|
|
|
|
cur = first
|
|
|
while not ipaddr_busy[cur].nil? do
|
|
|
- cur += 1
|
|
|
+ cur += 4 # netmask /30: next network == +4
|
|
|
throw :noFreeIPAddresses
|
|
|
end
|
|
|
|
|
|
return cur
|
|
|
end
|
|
|
+
|
|
|
+ def IPAddr
|
|
|
+ require 'ipaddr'
|
|
|
+ return IPAddr.new(self.ipaddr, Socket::AF_INET).to_s
|
|
|
+ end
|
|
|
+
|
|
|
+ def GetOpenVPNConfigZip
|
|
|
+ return `sudo openvpn-getconfig zip #{Shellwords.escape(self.login)}`
|
|
|
+ end
|
|
|
+
|
|
|
+ def GetOpenVPNConfigTarGz
|
|
|
+ return `sudo openvpn-getconfig tar.gz #{Shellwords.escape(self.login)}`
|
|
|
+ end
|
|
|
end
|