summaryrefslogtreecommitdiff
path: root/other/sslmim/filterd.cc
diff options
context:
space:
mode:
authorRoot THC2026-02-24 12:42:47 +0000
committerRoot THC2026-02-24 12:42:47 +0000
commitc9cbeced5b3f2bdd7407e29c0811e65954132540 (patch)
treeaefc355416b561111819de159ccbd86c3004cf88 /other/sslmim/filterd.cc
parent073fe4bf9fca6bf40cef2886d75df832ef4b6fca (diff)
initial
Diffstat (limited to 'other/sslmim/filterd.cc')
-rw-r--r--other/sslmim/filterd.cc100
1 files changed, 100 insertions, 0 deletions
diff --git a/other/sslmim/filterd.cc b/other/sslmim/filterd.cc
new file mode 100644
index 0000000..2436295
--- /dev/null
+++ b/other/sslmim/filterd.cc
@@ -0,0 +1,100 @@
1/*
2 * Copyright (C) 1999/2000 Sebastian Krahmer.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by Sebastian Krahmer.
16 * 4. The name Sebastian Krahmer may not be used to endorse or promote
17 * products derived from this software without specific prior written
18 * permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
21 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 */
32#include "misc.h"
33#include "socket.h"
34#include "filter.h"
35
36#include <stdio.h>
37#include <sys/types.h>
38#include <sys/socket.h>
39#include <errno.h>
40#include <netinet/in.h>
41#include <arpa/inet.h>
42#include <unistd.h>
43#include <string.h>
44#include <stdlib.h>
45#include <sys/time.h>
46#include <string>
47#include <signal.h>
48
49using namespace NS_Misc;
50
51void usage(char *s)
52{
53}
54
55unsigned short inc = 0;
56
57int main(int argc, char **argv)
58{
59
60 int c, sfd, afd;
61 unsigned short port = 0;
62
63 if (argc < 2)
64 usage(argv[0]);
65
66 // handle commandline arguments
67 while ((c = getopt(argc, argv, "p:")) != -1) {
68 switch (c) {
69 case 'p':
70 port = atoi(optarg);
71 break;
72 default:
73 usage(argv[0]);
74 break;
75 }
76 }
77 if (signal(SIGCHLD, sig_x) < 0)
78 die("main::signal");
79
80 // do the usual network-server setup
81 if ((sfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
82 die("main::socket");
83
84 // bind + listen
85 if (NS_Socket::bind_local(sfd, port, true) < 0)
86 die(NS_Socket::why());
87
88 while ((afd = accept(sfd, NULL, 0)) >= 0) {
89 ++inc;
90 if (fork() > 0) {
91 close(afd);
92 continue;
93 }
94 cerr<<"l\n";
95 NS_Filter::check_and_forward(afd);
96 exit(0);
97 }
98 return 0;
99}
100