1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/* $Id: testupnppermissions.c,v 1.5 2025/04/21 22:56:49 nanard Exp $ */
/* (c) 2007-2025 Thomas Bernard
* MiniUPnP Project
* http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
*/
#include <stdio.h>
#include <string.h>
#include <syslog.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "miniupnpdtypes.h"
#include "upnppermissions.h"
struct lan_addr_list lan_addrs;
time_t startup_time = 0;
void
print_upnpperm(const struct upnpperm * p)
{
switch(p->type)
{
case UPNPPERM_ALLOW:
printf("allow ");
break;
case UPNPPERM_DENY:
printf("deny ");
break;
default:
printf("error ! ");
}
printf("%hu-%hu ", p->eport_min, p->eport_max);
printf("%s/", inet_ntoa(p->address));
printf("%s ", inet_ntoa(p->mask));
printf("%hu-%hu", p->iport_min, p->iport_max);
putchar('\n');
}
int main(int argc, char * * argv)
{
int i, r, ret;
struct upnpperm p;
if(argc < 2) {
fprintf(stderr, "Usage: %s \"permission line\" [...]\n", argv[0]);
fprintf(stderr, "Example: %s \"allow 1234 10.10.10.10/32 1234\"\n", argv[0]);
return 1;
}
openlog("testupnppermissions", LOG_PERROR, LOG_USER);
ret = 0;
for(i=1; i<argc; i++) {
printf("%2d '%s'\n", i, argv[i]);
memset(&p, 0, sizeof(struct upnpperm));
r = read_permission_line(&p, argv[i]);
if(r==0) {
printf("Permission read successfully\n");
print_upnpperm(&p);
} else {
printf("Permission read failed, please check its correctness\n");
ret++;
}
putchar('\n');
}
return ret;
}
|