summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings
Unidiff
Diffstat (limited to 'noncore/settings/networksettings') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/changedns111
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.cpp8
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
9usage(){
10 echo "usage:
11$SN -a {ip} [{ip}...]
12$SN -r {ip} [{ip}...]"
13}
14
15#if are there at least two arguments?
16if [ "$#" -gt 1 ]
17then
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
106else
107
108 usage
109
110#end
111fi
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()));