20 |
* |
* |
21 |
*/ |
*/ |
22 |
|
|
23 |
|
#include "config.h" |
24 |
|
|
25 |
#include <stdlib.h> |
#include <stdlib.h> |
26 |
#include <stdio.h> |
#include <stdio.h> |
27 |
#include <sys/types.h> |
#include <sys/types.h> |
33 |
#include <string.h> |
#include <string.h> |
34 |
#include <errno.h> |
#include <errno.h> |
35 |
|
|
36 |
|
#include "gettext.h" |
37 |
#include "log.h" |
#include "log.h" |
38 |
#include "iptunnel/dns.h" |
#include "iptunnel/dns.h" |
39 |
|
|
47 |
FILE *f; |
FILE *f; |
48 |
struct stat st; |
struct stat st; |
49 |
|
|
50 |
if( !stat("/etc/resolv.peng", &st) ) |
if (!stat ("/etc/resolv.peng", &st)) |
51 |
log(LOG_WARNING, "/etc/resolv.peng exists\n"); |
log (LOG_WARNING, gettext ("/etc/resolv.peng exists\n")); |
52 |
else |
else |
53 |
{ |
{ |
54 |
if(rename("/etc/resolv.conf","/etc/resolv.peng")) |
if (rename ("/etc/resolv.conf", "/etc/resolv.peng")) |
55 |
{ |
{ |
56 |
log(LOG_ERR, "Could not rename /etc/resolv.conf: %s (%d)\n", |
log (LOG_ERR, gettext ("Could not rename /etc/resolv.conf: %s (%d)\n"), |
57 |
strerror(errno), errno); |
strerror (errno), errno); |
58 |
exit(1); |
exit (1); |
59 |
} |
} |
60 |
} |
} |
61 |
|
|
62 |
/* Now create a new resolv.conf from scratch */ |
/* Now create a new resolv.conf from scratch */ |
63 |
f=fopen("/etc/resolv.conf", "w"); |
f = fopen ("/etc/resolv.conf", "w"); |
64 |
if(f!=NULL) |
if (f != NULL) |
65 |
{ |
{ |
66 |
fprintf(f, "#This file has been automaticly generated by pengfork\n"); |
fprintf (f, "# This file has been automaticly generated by pengfork\n"); |
67 |
fprintf(f, "#A backup of your old configuration has been made in" |
fprintf (f, "# A backup of your old configuration has been made in" |
68 |
" /etc/resolv.peng\n"); |
" /etc/resolv.peng\n"); |
69 |
fprintf(f, "#It will be restored when connection is down\n\n"); |
fprintf (f, "# It will be restored when connection is down\n\n"); |
70 |
fprintf(f, "domain %s\n", domain); |
fprintf (f, "domain %s\n", domain); |
71 |
fprintf(f, "search %s\n", domain); |
fprintf (f, "search %s\n", domain); |
72 |
fprintf(f, "nameserver %s\n", inet_ntoa(dns)); |
fprintf (f, "nameserver %s\n", inet_ntoa (dns)); |
73 |
fclose(f); |
fclose (f); |
74 |
} |
} |
75 |
else |
else |
76 |
{ |
{ |
77 |
log(LOG_ERR, "Could not create /etc/resolv.conf: %s (%d)\n", |
log (LOG_ERR, gettext ("Could not create /etc/resolv.conf: %s (%d)\n"), |
78 |
strerror(errno), errno); |
strerror (errno), errno); |
79 |
exit(1); |
exit (1); |
80 |
} |
} |
81 |
dns_set = 1; |
dns_set = 1; |
82 |
|
|
88 |
{ |
{ |
89 |
struct stat st; |
struct stat st; |
90 |
|
|
91 |
if( !stat("/etc/resolv.peng", &st) ) |
if (!stat ("/etc/resolv.peng", &st)) |
92 |
{ |
{ |
93 |
if(unlink("/etc/resolv.conf")) |
if (unlink ("/etc/resolv.conf")) |
94 |
{ |
{ |
95 |
log(LOG_WARNING, "Could not delete /etc/resov.conf: %s (%d)\n", |
log (LOG_WARNING, gettext ("Could not delete /etc/resov.conf: %s (%d)\n"), |
96 |
strerror(errno), errno); |
strerror (errno), errno); |
97 |
return 0; |
return 0; |
98 |
} |
} |
99 |
|
|
100 |
if(rename("/etc/resolv.peng","/etc/resolv.conf")) |
if (rename ("/etc/resolv.peng", "/etc/resolv.conf")) |
101 |
{ |
{ |
102 |
log(LOG_WARNING, "Could not rename /etc/resolv.peng: %s (%d)\n", |
log (LOG_WARNING, gettext ("Could not rename /etc/resolv.peng: %s (%d)\n"), |
103 |
strerror(errno), errno); |
strerror (errno), errno); |
104 |
return 0; |
return 0; |
105 |
} |
} |
106 |
dns_set = 0; |
dns_set = 0; |
107 |
return 1; |
return 1; |