Diffstat (limited to 'noncore/settings/networksettings/interfaces') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/networksettings/interfaces/changedns | 111 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | 8 |
2 files changed, 115 insertions, 4 deletions
diff --git a/noncore/settings/networksettings/interfaces/changedns b/noncore/settings/networksettings/interfaces/changedns new file mode 100644 index 0000000..4760a67 --- a/dev/null +++ b/noncore/settings/networksettings/interfaces/changedns | |||
@@ -0,0 +1,111 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | SN="`basename $0`"# base portion of our filename | ||
4 | AE="-a" # switch to add an entry | ||
5 | RE="-r" # swithc to remove an entry | ||
6 | EL="/tmp/resolv.conf"# expected location of the system nameserver config file | ||
7 | ARGS="$@" # friendly variable name for all args | ||
8 | |||
9 | usage(){ | ||
10 | echo "usage: | ||
11 | $SN -a {ip} [{ip}...] | ||
12 | $SN -r {ip} [{ip}...]" | ||
13 | } | ||
14 | |||
15 | #if are there at least two arguments? | ||
16 | if [ "$#" -gt 1 ] | ||
17 | then | ||
18 | |||
19 | #remove any old resolv.conf file | ||
20 | rm .resolve.conf .resolve.old .resolve.new 2> /dev/null | ||
21 | |||
22 | #cast current nameserver file into OLD | ||
23 | cat "$EL" > .resolve.old | ||
24 | |||
25 | #build IP list | ||
26 | for ARG in $ARGS | ||
27 | do | ||
28 | if [ "$ARG" != "$1" ] | ||
29 | then | ||
30 | IP_LIST=`echo "$IP_LIST $ARG"` | ||
31 | fi | ||
32 | done | ||
33 | |||
34 | #select case on first switch | ||
35 | case "$1" in | ||
36 | |||
37 | #case '-a' | ||
38 | "$AE") | ||
39 | |||
40 | #for each IP in IP_LIST | ||
41 | for IP in $IP_LIST | ||
42 | do | ||
43 | #add nameserver entery to .newfile | ||
44 | echo "nameserver $IP" >> .resolve.conf | ||
45 | |||
46 | #cat OLD into grep excluding IP lines, | ||
47 | #storing results into NEW | ||
48 | cat .resolve.old | grep -v "$IP" > .resolve.new | ||
49 | |||
50 | #set OLD to NEW | ||
51 | cat .resolve.new > .resolve.old | ||
52 | |||
53 | done | ||
54 | |||
55 | #cat OLD onto end of .newfile | ||
56 | cat .resolve.new >> .resolve.conf | ||
57 | |||
58 | #clean up work files | ||
59 | rm .resolve.new .resolve.old | ||
60 | |||
61 | #move old conf file to old conf file.bak | ||
62 | mv "$EL" "$EL.bak" | ||
63 | |||
64 | #move .newfile to resolve.conf file | ||
65 | mv .resolve.conf "$EL" | ||
66 | |||
67 | echo "Added $IP_LIST to $EL" | ||
68 | ;; | ||
69 | |||
70 | #case '-r' | ||
71 | "$RE") | ||
72 | |||
73 | #for each IP in IP_LIST | ||
74 | for IP in $IP_LIST | ||
75 | do | ||
76 | #cat OLD into grep excluding IP lines, | ||
77 | #storing results into NEW | ||
78 | cat .resolve.old | grep -v "$IP" > .resolve.new | ||
79 | |||
80 | #set OLD to NEW | ||
81 | cat .resolve.new > .resolve.old | ||
82 | |||
83 | done | ||
84 | |||
85 | #move old conf file to old conf file.bak | ||
86 | mv "$EL" "$EL.bak" | ||
87 | |||
88 | #move .newfile to resolve.conf file | ||
89 | mv .resolve.new "$EL" | ||
90 | |||
91 | echo "Removed $IP_LIST from $EL" | ||
92 | |||
93 | ;; | ||
94 | |||
95 | #case else | ||
96 | *) | ||
97 | |||
98 | usage | ||
99 | ;; | ||
100 | |||
101 | |||
102 | #end switch | ||
103 | esac | ||
104 | |||
105 | #else | ||
106 | else | ||
107 | |||
108 | usage | ||
109 | |||
110 | #end | ||
111 | fi | ||
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp index e717d6f..97c05cc 100644 --- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp +++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #include <assert.h> | 15 | #include <assert.h> |
16 | 16 | ||
17 | #define DNSSCRIPT "interfacednsscript" | 17 | #define DNSSCRIPT "changedns" |
18 | 18 | ||
19 | /** | 19 | /** |
20 | * Constuctor. Set up the connection and load the first profile. | 20 | * Constuctor. Set up the connection and load the first profile. |
@@ -76,8 +76,8 @@ bool InterfaceSetupImp::saveSettings(){ | |||
76 | interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); | 76 | interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); |
77 | interfaces->setInterfaceOption("gateway", gatewayEdit->text()); | 77 | interfaces->setInterfaceOption("gateway", gatewayEdit->text()); |
78 | QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); | 78 | QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); |
79 | interfaces->setInterfaceOption("up "DNSSCRIPT" add ", dns); | 79 | interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); |
80 | interfaces->setInterfaceOption("down "DNSSCRIPT" remove ", dns); | 80 | interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); |
81 | } | 81 | } |
82 | 82 | ||
83 | // IP Information | 83 | // IP Information |
@@ -133,7 +133,7 @@ void InterfaceSetupImp::setProfile(const QString &profile){ | |||
133 | 133 | ||
134 | // IP Information | 134 | // IP Information |
135 | autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); | 135 | autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); |
136 | QString dns = interfaces->getInterfaceOption("up interfacednsscript add", error); | 136 | QString dns = interfaces->getInterfaceOption("up interfacednsscript -a", error); |
137 | if(dns.contains(" ")){ | 137 | if(dns.contains(" ")){ |
138 | firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); | 138 | firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); |
139 | secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); | 139 | secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); |