added ip handler

This commit is contained in:
ori
2019-08-17 13:55:58 -07:00
parent 0cc63b392b
commit 3e3ea538af
4 changed files with 67 additions and 7 deletions

View File

@@ -40,6 +40,7 @@ class SettingsManager(metaclass=Singleton):
"connection_type": "DHCP",
"ip": "",
"gateway": "",
"netmask": "",
"hostname": "",
"curr_camera": "",
"curr_pipeline": ""
@@ -188,8 +189,6 @@ class SettingsManager(metaclass=Singleton):
for key in dic['change_general_settings_values']:
if self.default_general_settings[key]:
self.general_settings[key] = dic['change_general_settings_values'][key]
if key == "hostname":
subprocess.call(['hostnamectl set-hostname', str(self.general_settings['hostname'])])
self.settings_manager.save_settings()
#after all values has been set change settings
self.change_general_settings()

View File

@@ -0,0 +1,42 @@
import subprocess
import netifaces
class ChangeIP:
def __init__(self, ip_type, ip, netmask, gateway, hostname):
adapter = self.find_adapter()
if ip_type == "DHCP":
self.change_to_dhcp(adapter=adapter)
elif ip_type == "Static":
self.change_to_static(adapter=adapter, ip=ip, netmask=netmask, gateway=gateway)
self.change_hostname(hostname=hostname)
self.restart_adapter(adapter=adapter)
@staticmethod
def change_to_dhcp(adapter):
subprocess.call(['dhclient -r', adapter])
@staticmethod
def change_to_static(adapter, ip, netmask, gateway):
subprocess.call(['ifconfig', adapter, ip, 'netmask', netmask])
subprocess.call(['route add default gw', gateway, adapter])
@staticmethod
def restart_adapter(adapter):
subprocess.call(['ifconfig', adapter, 'down'])
subprocess.call(['ifconfig', adapter, 'up'])
@staticmethod
def find_adapter():
for i_name in netifaces.interfaces():
interface = netifaces.ifaddresses(i_name)[netifaces.AF_INET][0]
address = interface['addr'].split('.')[0]
if address == "10":
return str(i_name)
@staticmethod
def change_hostname(hostname):
subprocess.call(['hostnamectl set-hostname', "Chameleon-Vision-{}".format(hostname)])

View File

@@ -25,6 +25,14 @@
<Input v-model="ip" size="small" :disabled="isConnection"></Input>
</Col>
</row>
<row type="flex" justify="start" align="middle" class="spacing">
<Col span="4">
<h4>Netmask:</h4>
</Col>
<Col span="10">
<Input v-model="netmask" size="small" :disabled="isConnection"></Input>
</Col>
</row>
<row type="flex" justify="start" align="middle" class="spacing">
<Col span="4">
<h4>Gateway:</h4>
@@ -103,6 +111,14 @@
this.$store.commit('ip',value);
}
},
netmask:{
get: function(){
return this.$store.state.netmask;
},
set: function(){
this.$store.commit('netmask',value);
}
},
gateway:{
get: function(){
return this.$store.state.gateway;

View File

@@ -30,14 +30,15 @@ export const store = new Vuex.Store({
area:[0,100],
ratio:[0,20],
extent:[0,100],
sort_mode:'Largest', //
target_group:'Single', //
target_intersection:'Up', //
sort_mode:'Largest',
target_group:'Single',
target_intersection:'Up',
//Settings
team_number:0,
connection_type:"DHCP",
ip:0,
gateWay:0,
ip:"",
gateWay:"",
netmask:"",
hostname:"",
//live info
port:1181,
@@ -68,6 +69,7 @@ export const store = new Vuex.Store({
team_number: set('team_number'),
connection_type: set('connection_type'),
ip: set('ip'),
netmask: set('netmask'),
gateWay : set('gateway'),
hostname : set('hostname'),
is_binary: set('is_binary'),
@@ -99,6 +101,7 @@ export const store = new Vuex.Store({
team_number: state => state.teamValue,
connection_type: state => state.connectionType,
ip: state => state.ip,
netmask: state => state.netmask,
gateWay: state => state.gateWay,
hostname: state => state.hostName,
is_binary: state => state.is_binary,