source: trunk/src/ocatsetup.c @ 416

Last change on this file since 416 was 416, checked in by eagle, 8 years ago

man page updated
support of random local addresses added (option -R)

File size: 7.1 KB
Line 
1/* Copyright 2008 Bernhard R. Fischer, Daniel Haslinger.
2 *
3 * This file is part of OnionCat.
4 *
5 * OnionCat is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 3 of the License.
8 *
9 * OnionCat is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with OnionCat. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18/*! ocatsetup_.c
19 *  This file contains the global settings structure.
20 *
21 *  @author Bernhard Fischer <rahra _at_ cypherpunk at>
22 *  @version 2008/02/03-01
23 */
24
25
26#include "ocat.h"
27
28
29static struct sockaddr_in6 socks_dst6_;
30static struct sockaddr_in6 oc_listen6_;
31static struct sockaddr* oc_listen_a_[] = {(struct sockaddr*) &oc_listen6_, NULL};
32
33struct OcatSetup setup_ =
34{
35   // fhd_keys
36   {0, 0},
37   // fhd_key_len
38   sizeof(uint32_t),
39   //TOR_SOCKS_PORT,
40   OCAT_LISTEN_PORT, 
41   OCAT_DEST_PORT, OCAT_CTRL_PORT, 
42   //! default tunfd is stdin/stdout
43   {0, 1},
44   //! default debug level
45   LOG_DEBUG,
46   OCAT_UNAME, {0}, {{{0}}}, 0, 0, 1, OCAT_DIR, TUN_DEV,
47   0, TOR_PREFIX4, TOR_PREFIX4_MASK,
48   NULL, 1,
49   0,                                      // use_tap
50   {0x00, 0x00, 0x6c, 0x00, 0x00, 0x00},   // ocat_hwaddr (OnionCat MAC address)
51   PID_FILE,
52   NULL, NULL,                             // logfile
53   0,                                      // daemon
54   {
55      {{{0xfd, 0x87, 0xd8, 0x7e, 0xeb, 0x43,
56           0xed, 0xb1, 0x08, 0xe4, 0x35, 0x88, 0xe5, 0x46, 0x35, 0xca}}}, // initial permanent peer "5wyqrzbvrdsumnok" (mail.root-servers.cat)
57      {{{0xfd, 0x87, 0xd8, 0x7e, 0xeb, 0x43,
58           0xf6, 0x83, 0x64, 0xac, 0x73, 0xf9, 0x61, 0xac, 0x9a, 0x00}}}  // initial permanent peer "62bwjldt7fq2zgqa" (dot.cat)
59   },
60   0,
61   "/dev/urandom",
62   {(struct sockaddr_in*) &socks_dst6_},
63   oc_listen_a_,
64   //! rand_addr
65   0
66};
67
68
69void init_setup(void)
70{
71   struct timeval tv;
72
73   // seeding PRNG rand()
74   if (gettimeofday(&tv, NULL) == -1)
75      log_msg(LOG_WARNING, "could gettimeofday(): \"%s\"", strerror(errno));
76   srand(tv.tv_sec ^ tv.tv_usec);
77
78   setup_.logf = stderr;
79   setup_.uptime = time(NULL);
80
81   setup_.socks_dst->sin_family = AF_INET;
82   setup_.socks_dst->sin_port = htons(TOR_SOCKS_PORT);
83   setup_.socks_dst->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
84#ifdef HAVE_SIN_LEN
85   setup_.socks_dst->sin_len = sizeof(socks_dst6_);
86#endif
87
88   /*
89   ((struct sockaddr_in*) *setup_.oc_listen)->sin_family = AF_INET;
90   setup_.oc_listen->sin_port = htons(OCAT_LISTEN_PORT);
91   setup_.oc_listen->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
92#ifdef HAVE_SIN_LEN
93   setup_.oc_listen->sin_len = sizeof(oc_listen6_);
94#endif
95*/
96}
97
98
99#define SBUF 100
100
101void print_setup_struct(FILE *f)
102{
103   char ip[SBUF], nm[SBUF], ip6[SBUF], logf[SBUF], hw[SBUF], rp[SBUF], sk[SBUF];
104   int i, t;
105
106   inet_ntop(AF_INET, &setup_.ocat_addr4, ip, SBUF);
107   inet_ntop(AF_INET, &setup_.ocat_addr4_mask, nm, SBUF);
108   inet_ntop(AF_INET6, &setup_.ocat_addr, ip6, SBUF);
109   ether_ntoa_r((struct ether_addr*) setup_.ocat_hwaddr, hw);
110
111   if (setup_.logf == stderr)
112      strlcpy(logf, "stderr", sizeof(logf));
113   else
114      snprintf(logf, sizeof(logf), "%p", setup_.logf);
115
116   t = time(NULL) - setup_.uptime;
117
118
119   fprintf(f,
120         "fhd_key[IPV4(%d)]       = 0x%04x\n"
121         "fhd_key[IPV6(%d)]       = 0x%04x\n"
122         "fhd_key_len            = %d\n"
123         //"tor_socks_port    = %d\n"
124         "ocat_listen_port       = %d\n"
125         "ocat_dest_port         = %d\n"
126         "ocat_ctrl_port         = %d\n"
127         "tunfd[0]               = %d\n"
128         "tunfd[1]               = %d\n"
129         "debug_level            = %d\n"
130         "usrname                = \"%s\"\n"
131         "onion_url              = \"%s\"\n"
132         "ocat_addr              = %s\n"
133         "create_clog            = %d\n"
134         "runasroot              = %d\n"
135         "controller             = %d\n"
136         "ocat_dir               = \"%s\"\n"
137         "tun_dev                = \"%s\"\n"
138         "ipv4_enable            = %d\n"
139         "ocat_addr4             = %s\n"
140         "ocat_addr4_mask        = %s\n"
141         "config_file            = \"%s\"\n"
142         "config_read            = %d\n"
143         "use_tap                = %d\n"
144         "ocat_hwaddr            = %s\n"
145         "pid_file               = \"%s\"\n"
146         "logfn                  = \"%s\"\n"
147         "logf                   = %s\n"
148         "daemon                 = %d\n"
149         "uptime                 = %d days, %d:%02d\n",
150 
151         IPV4_KEY, ntohl(setup_.fhd_key[IPV4_KEY]), IPV6_KEY, ntohl(setup_.fhd_key[IPV6_KEY]),
152         setup_.fhd_key_len,
153         //setup_.tor_socks_port,
154         setup_.ocat_listen_port,
155         setup_.ocat_dest_port,
156         setup_.ocat_ctrl_port,
157         setup_.tunfd[0], setup_.tunfd[1],
158         setup_.debug_level,
159         setup_.usrname,
160         setup_.onion_url,
161         ip6,
162         setup_.create_clog,
163         setup_.runasroot,
164         setup_.controller,
165         setup_.ocat_dir,
166         setup_.tun_dev,
167         setup_.ipv4_enable,
168         ip,
169         nm,
170         setup_.config_file,
171         setup_.config_read,
172         setup_.use_tap,
173         hw,
174         setup_.pid_file,
175         setup_.logfn,
176         logf,
177         setup_.daemon,
178         t / (3600 * 24), t / 3600 % 24, t / 60 % 60
179         );
180
181   for (i = 0; i < ROOT_PEERS; i++)
182      if (inet_ntop(AF_INET6, &setup_.root_peer[i], rp, SBUF))
183         fprintf(f, "root_peer[%d]      = %s\n", i, rp);
184
185   if (setup_.socks_dst->sin_family == AF_INET)
186   {
187      inet_ntop(setup_.socks_dst->sin_family, &setup_.socks_dst->sin_addr, sk, SBUF);
188      fprintf(f,
189         "socks_dst.sin_family   = %04x\n"
190         "socks_dst.sin_port     = %d\n"
191         "socks_dst.sin_addr     = %s\n",
192         setup_.socks_dst->sin_family,
193         ntohs(setup_.socks_dst->sin_port),
194         sk
195         );
196   }
197   else
198   {
199      inet_ntop(setup_.socks_dst6->sin6_family, &setup_.socks_dst6->sin6_addr, sk, SBUF);
200      fprintf(f,
201         "socks_dst6.sin6_family = %04x\n"
202         "socks_dst6.sin6_port   = %d\n"
203         "socks_dst6.sin6_addr   = %s\n",
204         setup_.socks_dst6->sin6_family,
205         ntohs(setup_.socks_dst6->sin6_port),
206         sk
207         );
208   }
209
210   /*
211   if (setup_.oc_listen->sin_family == AF_INET)
212   {
213      inet_ntop(setup_.oc_listen->sin_family, &setup_.oc_listen->sin_addr, sk, SBUF);
214      fprintf(f,
215         "socks_dst.sin_family   = %04x\n"
216         "socks_dst.sin_port     = %d\n"
217         "socks_dst.sin_addr     = %s\n",
218         setup_.oc_listen->sin_family,
219         ntohs(setup_.oc_listen->sin_port),
220         sk
221         );
222   }
223   else
224   {
225      inet_ntop(setup_.oc_listen6->sin6_family, &setup_.oc_listen6->sin6_addr, sk, SBUF);
226      fprintf(f,
227         "oc_listen6.sin6_family = %04x\n"
228         "oc_listen6.sin6_port   = %d\n"
229         "oc_listen6.sin6_addr   = %s\n",
230         setup_.oc_listen6->sin6_family,
231         ntohs(setup_.oc_listen6->sin6_port),
232         sk
233         );
234   }
235   */
236}
237
Note: See TracBrowser for help on using the repository browser.