LIBSSDP
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Macros
src
configuration.c
Go to the documentation of this file.
1
7
#include <stdlib.h>
8
#include <stdio.h>
9
#include <string.h>
10
#include <unistd.h>
11
12
#include "
common_definitions.h
"
13
#include "
configuration.h
"
14
#include "
log.h
"
15
#include "
net_utils.h
"
16
#include "
ssdp_message.h
"
17
18
void
set_default_configuration
(
configuration_s
*c) {
19
20
/* Default configuration */
21
memset(c->
interface
,
'\0'
,
IPv6_STR_MAX_SIZE
);
22
memset(c->
ip
,
'\0'
,
IPv6_STR_MAX_SIZE
);
23
c->
run_as_daemon
=
FALSE
;
24
c->
run_as_server
=
FALSE
;
25
c->
listen_for_upnp_notif
=
FALSE
;
26
c->
scan_for_upnp_devices
=
TRUE
;
27
c->
forward_address
= NULL;
28
c->
ssdp_cache_size
= 10;
29
c->
fetch_info
=
TRUE
;
30
c->
json_output
=
FALSE
;
31
c->
xml_output
=
FALSE
;
32
c->
oneline_output
=
TRUE
;
33
c->
monochrome
=
FALSE
;
34
c->
ttl
= 64;
35
c->
filter
= NULL;
36
c->
ignore_search_msgs
=
TRUE
;
37
c->
use_ipv4
=
FALSE
;
38
c->
use_ipv6
=
FALSE
;
39
c->
quiet_mode
=
FALSE
;
40
c->
upnp_timeout
=
MULTICAST_TIMEOUT
;
41
c->
enable_loopback
=
FALSE
;
42
}
43
44
void
usage
(
void
) {
45
printf(
"[A]bused is [B]anks [U]ber-[S]exy-[E]dition [D]aemon\"\n\n"
);
46
printf(
"USAGE: abused [OPTIONS]\n"
);
47
printf(
"OPTIONS:\n"
);
48
//printf("\t-C <file.conf> Configuration file to use\n");
49
printf(
"\t-i Interface to use, default is all\n"
);
50
printf(
"\t-I Interface IP address to use, default is a bind-all address\n"
);
51
printf(
"\t-t TTL value (routers to hop), default is 1\n"
);
52
printf(
"\t-f <string> Filter for capturing, 'grep'-like effect. Also works\n"
);
53
printf(
"\t for -u and -U where you can specify a list of\n"
);
54
printf(
"\t comma separated filters\n"
);
55
printf(
"\t-M Don't ignore UPnP M-SEARCH messages\n"
);
56
printf(
"\t-S Run as a server,\n"
);
57
printf(
"\t listens on port 43210 and returns a\n"
);
58
printf(
"\t UPnP scan result (formatted list) for AXIS devices\n"
);
59
printf(
"\t upon receiving the string 'abused'\n"
);
60
printf(
"\t-d Run as a UNIX daemon,\n"
);
61
printf(
"\t only works in combination with -S or -a\n"
);
62
printf(
"\t-u Listen for local UPnP (SSDP) notifications\n"
);
63
printf(
"\t-U Perform an active search for UPnP devices\n"
);
64
printf(
"\t-a <ip>:<port> Forward the events to the specified ip and port,\n"
);
65
printf(
"\t also works in combination with -u.\n"
);
66
printf(
"\t-F Do not try to parse the \"Location\" header and fetch device info\n"
);
67
//printf("\t-j Convert results to JSON\n");
68
printf(
"\t-x Convert results to XML\n"
);
69
printf(
"\t-m Monochrome mode (disable all colors)\n"
);
70
//printf("\t-4 Force the use of the IPv4 protocol\n");
71
//printf("\t-6 Force the use of the IPv6 protocol\n");
72
printf(
"\t-q Be quiet!\n"
);
73
printf(
"\t-T The time to wait for a devices answer a search query\n"
);
74
printf(
"\t-L Enable multicast loopback traffic\n"
);
75
printf(
"\t-R Print full SSDP messagesd (Rich mode)\n"
);
76
}
77
78
int
parse_args
(
const
int
argc,
char
*
const
*argv,
configuration_s
*
conf
) {
79
int
opt;
80
81
while
((opt = getopt(argc, argv,
"C:i:I:t:f:MSduUma:RFc:jx64qT:LR"
)) > 0) {
82
char
*pend = NULL;
83
84
switch
(opt) {
85
86
case
'C'
:
87
/*if(!parse_configuration_file(conf, optarg)) {
88
printf("Parsing of '%s' failed!, optarg);
89
};*/
90
break
;
91
92
case
'i'
:
93
strncpy(conf->
interface
, optarg,
IPv6_STR_MAX_SIZE
);
94
break
;
95
96
case
'I'
:
97
strncpy(conf->
ip
, optarg,
IPv6_STR_MAX_SIZE
);
98
break
;
99
100
case
't'
:
101
// TODO: errorhandling
102
pend = NULL;
103
conf->
ttl
= (
unsigned
char)strtol(optarg, &pend, 10);
104
break
;
105
106
case
'f'
:
107
conf->
filter
= optarg;
108
break
;
109
110
case
'M'
:
111
conf->
ignore_search_msgs
=
FALSE
;
112
break
;
113
114
case
'S'
:
115
conf->
run_as_server
=
TRUE
;
116
break
;
117
118
case
'd'
:
119
conf->
run_as_daemon
=
TRUE
;
120
break
;
121
122
case
'u'
:
123
conf->
listen_for_upnp_notif
=
TRUE
;
124
break
;
125
126
case
'U'
:
127
conf->
scan_for_upnp_devices
=
TRUE
;
128
break
;
129
130
case
'a'
:
131
conf->
forward_address
= optarg;
132
break
;
133
134
case
'F'
:
135
conf->
fetch_info
=
FALSE
;
136
break
;
137
138
case
'c'
:
139
// TODO: errorhandling
140
pend = NULL;
141
conf->
ssdp_cache_size
= (int)strtol(optarg, &pend, 10);
142
break
;
143
144
case
'j'
:
145
conf->
xml_output
=
FALSE
;
146
conf->
json_output
=
TRUE
;
147
break
;
148
149
case
'x'
:
150
conf->
json_output
=
FALSE
;
151
conf->
xml_output
=
TRUE
;
152
break
;
153
154
case
'm'
:
155
conf->
monochrome
=
TRUE
;
156
break
;
157
158
case
'4'
:
159
conf->
use_ipv6
=
FALSE
;
160
conf->
use_ipv4
=
TRUE
;
161
break
;
162
163
case
'6'
:
164
conf->
use_ipv4
=
FALSE
;
165
conf->
use_ipv6
=
TRUE
;
166
break
;
167
168
case
'q'
:
169
conf->
quiet_mode
=
TRUE
;
170
break
;
171
172
case
'T'
:
173
pend = NULL;
174
conf->
upnp_timeout
= (int)strtol(optarg, &pend, 10);
175
break
;
176
177
case
'L'
:
178
conf->
enable_loopback
=
TRUE
;
179
break
;
180
181
case
'R'
:
182
conf->
xml_output
=
FALSE
;
183
conf->
oneline_output
=
FALSE
;
184
break
;
185
186
default
:
187
usage
();
188
return
1;
189
}
190
}
191
192
return
0;
193
}
194
IPv6_STR_MAX_SIZE
#define IPv6_STR_MAX_SIZE
Definition:
net_definitions.h:23
net_utils.h
configuration_struct::run_as_server
BOOL run_as_server
Definition:
configuration.h:25
configuration_struct::ip
char ip[IPv6_STR_MAX_SIZE]
Definition:
configuration.h:18
configuration_struct::use_ipv6
BOOL use_ipv6
Definition:
configuration.h:58
configuration_struct::upnp_timeout
int upnp_timeout
Definition:
configuration.h:62
configuration_struct::interface
char interface[IPv6_STR_MAX_SIZE]
Definition:
configuration.h:16
common_definitions.h
configuration_struct::filter
char * filter
Definition:
configuration.h:54
configuration_struct::ignore_search_msgs
BOOL ignore_search_msgs
Definition:
configuration.h:52
ssdp_message.h
TRUE
#define TRUE
Definition:
common_definitions.h:16
FALSE
#define FALSE
Definition:
common_definitions.h:18
parse_args
int parse_args(const int argc, char *const *argv, configuration_s *conf)
Definition:
configuration.c:78
configuration_struct::fetch_info
BOOL fetch_info
Definition:
configuration.h:35
set_default_configuration
void set_default_configuration(configuration_s *c)
Definition:
configuration.c:18
configuration.h
configuration_struct::forward_address
char * forward_address
Definition:
configuration.h:31
configuration_struct::use_ipv4
BOOL use_ipv4
Definition:
configuration.h:56
configuration_struct::monochrome
BOOL monochrome
Definition:
configuration.h:43
configuration_struct::ttl
unsigned char ttl
Definition:
configuration.h:50
configuration_struct::scan_for_upnp_devices
BOOL scan_for_upnp_devices
Definition:
configuration.h:29
configuration_struct::enable_loopback
BOOL enable_loopback
Definition:
configuration.h:64
configuration_struct
Definition:
configuration.h:14
configuration_struct::ssdp_cache_size
BOOL ssdp_cache_size
Definition:
configuration.h:37
configuration_struct::run_as_daemon
BOOL run_as_daemon
Definition:
configuration.h:20
MULTICAST_TIMEOUT
#define MULTICAST_TIMEOUT
Definition:
ssdp_message.h:20
configuration_struct::json_output
BOOL json_output
Definition:
configuration.h:39
usage
void usage(void)
Definition:
configuration.c:44
conf
static configuration_s conf
Definition:
main.c:73
configuration_struct::xml_output
BOOL xml_output
Definition:
configuration.h:41
configuration_struct::oneline_output
BOOL oneline_output
Definition:
configuration.h:45
configuration_struct::quiet_mode
BOOL quiet_mode
Definition:
configuration.h:60
log.h
configuration_struct::listen_for_upnp_notif
BOOL listen_for_upnp_notif
Definition:
configuration.h:27
Generated on Mon Jun 12 2017 08:54:20 for LIBSSDP by
1.8.8