teach fiche about binding to a specific address
Add the -L <listen_addr> option which permits fiche to bind to a specific local address rather than INADDR_ANY.
This commit is contained in:
@@ -137,7 +137,7 @@ To use fiche you have to have netcat installed. You probably already have it - t
|
|||||||
|
|
||||||
```
|
```
|
||||||
usage: fiche [-D6epbsdSolBuw].
|
usage: fiche [-D6epbsdSolBuw].
|
||||||
[-d domain] [-p port] [-s slug size]
|
[-d domain] [-L listen_addr ] [-p port] [-s slug size]
|
||||||
[-o output directory] [-B buffer size] [-u user name]
|
[-o output directory] [-B buffer size] [-u user name]
|
||||||
[-l log file] [-b banlist] [-w whitelist] [-S]
|
[-l log file] [-b banlist] [-w whitelist] [-S]
|
||||||
```
|
```
|
||||||
|
|||||||
7
fiche.c
7
fiche.c
@@ -197,6 +197,8 @@ void fiche_init(Fiche_Settings *settings) {
|
|||||||
"example.com",
|
"example.com",
|
||||||
// output dir
|
// output dir
|
||||||
"code",
|
"code",
|
||||||
|
// listen_addr
|
||||||
|
"0.0.0.0",
|
||||||
// port
|
// port
|
||||||
9999,
|
9999,
|
||||||
// slug length
|
// slug length
|
||||||
@@ -442,7 +444,7 @@ static int start_server(Fiche_Settings *settings) {
|
|||||||
// Prepare address and port handler
|
// Prepare address and port handler
|
||||||
struct sockaddr_in address;
|
struct sockaddr_in address;
|
||||||
address.sin_family = AF_INET;
|
address.sin_family = AF_INET;
|
||||||
address.sin_addr.s_addr = INADDR_ANY;
|
address.sin_addr.s_addr = inet_addr(settings->listen_addr);
|
||||||
address.sin_port = htons(settings->port);
|
address.sin_port = htons(settings->port);
|
||||||
|
|
||||||
// Bind to port
|
// Bind to port
|
||||||
@@ -457,7 +459,8 @@ static int start_server(Fiche_Settings *settings) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
print_status("Server started listening on port: %d.", settings->port);
|
print_status("Server started listening on: %s:%d.",
|
||||||
|
settings->listen_addr, settings->port);
|
||||||
print_separator();
|
print_separator();
|
||||||
|
|
||||||
// Run dispatching loop
|
// Run dispatching loop
|
||||||
|
|||||||
5
fiche.h
5
fiche.h
@@ -43,6 +43,11 @@ typedef struct Fiche_Settings {
|
|||||||
*/
|
*/
|
||||||
char *output_dir_path;
|
char *output_dir_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Address on which fiche is waiting for connections
|
||||||
|
*/
|
||||||
|
char *listen_addr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Port on which fiche is waiting for connections
|
* @brief Port on which fiche is waiting for connections
|
||||||
*/
|
*/
|
||||||
|
|||||||
13
main.c
13
main.c
@@ -44,7 +44,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
// Parse input arguments
|
// Parse input arguments
|
||||||
int c;
|
int c;
|
||||||
while ((c = getopt(argc, argv, "D6eSp:b:s:d:o:l:B:u:w:")) != -1) {
|
while ((c = getopt(argc, argv, "D6eSL:p:b:s:d:o:l:B:u:w:")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
||||||
// domain
|
// domain
|
||||||
@@ -61,6 +61,13 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// listen_addr
|
||||||
|
case 'L':
|
||||||
|
{
|
||||||
|
fs.listen_addr = optarg;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// slug size
|
// slug size
|
||||||
case 's':
|
case 's':
|
||||||
{
|
{
|
||||||
@@ -120,8 +127,8 @@ int main(int argc, char **argv) {
|
|||||||
// Display help in case of any unsupported argument
|
// Display help in case of any unsupported argument
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
printf("usage: fiche [-dpsSoBulbw].\n");
|
printf("usage: fiche [-dLpsSoBulbw].\n");
|
||||||
printf(" [-d domain] [-p port] [-s slug size]\n");
|
printf(" [-d domain] [-L listen_addr] [-p port] [-s slug size]\n");
|
||||||
printf(" [-o output directory] [-B buffer size] [-u user name]\n");
|
printf(" [-o output directory] [-B buffer size] [-u user name]\n");
|
||||||
printf(" [-l log file] [-b banlist] [-w whitelist] [-S]\n");
|
printf(" [-l log file] [-b banlist] [-w whitelist] [-S]\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user