summaryrefslogtreecommitdiffstats
path: root/proxy/src
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2011-12-12 15:43:17 -0500
committerSimo Sorce <simo@redhat.com>2012-01-04 19:19:54 -0500
commit0d39e7a43a585a46e9cb6c755d97003470c5bd54 (patch)
tree6f54cf7e09f0188d46e8e6ecf85e4c58d9412d31 /proxy/src
parentd82bf26a6d4d44e3c6f5473f4dad508564e4cdd7 (diff)
downloadgss-proxy-0d39e7a43a585a46e9cb6c755d97003470c5bd54.tar.gz
gss-proxy-0d39e7a43a585a46e9cb6c755d97003470c5bd54.tar.xz
gss-proxy-0d39e7a43a585a46e9cb6c755d97003470c5bd54.zip
Intial skeleton gssproxy daemon
Diffstat (limited to 'proxy/src')
-rw-r--r--proxy/src/gssproxy.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/proxy/src/gssproxy.c b/proxy/src/gssproxy.c
new file mode 100644
index 0000000..ca9d533
--- /dev/null
+++ b/proxy/src/gssproxy.c
@@ -0,0 +1,91 @@
+/*
+ GSS-PROXY
+
+ Copyright (C) 2011 Red Hat, Inc.
+ Copyright (C) 2011 Simo Sorce <simo.sorce@redhat.com>
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+*/
+
+#include "config.h"
+#include <libintl.h>
+#include "popt.h"
+
+#define _(STRING) gettext(STRING)
+
+int main(int argc, const char *argv[])
+{
+ int opt;
+ poptContext pc;
+ int opt_daemon = 0;
+ int opt_interactive = 0;
+ int opt_version = 0;
+ char *opt_config_file = NULL;
+ char *config_file = NULL;
+
+ struct poptOption long_options[] = {
+ POPT_AUTOHELP
+ {"daemon", 'D', POPT_ARG_NONE, &opt_daemon, 0, \
+ _("Become a daemon (default)"), NULL }, \
+ {"interactive", 'i', POPT_ARG_NONE, &opt_interactive, 0, \
+ _("Run interactive (not a daemon)"), NULL}, \
+ {"config", 'c', POPT_ARG_STRING, &opt_config_file, 0, \
+ _("Specify a non-default config file"), NULL}, \
+ {"version", '\0', POPT_ARG_NONE, &opt_version, 0, \
+ _("Print version number and exit"), NULL }, \
+ POPT_TABLEEND
+ };
+
+ pc = poptGetContext(argv[0], argc, argv, long_options, 0);
+ while((opt = poptGetNextOpt(pc)) != -1) {
+ switch(opt) {
+ default:
+ fprintf(stderr, "\nInvalid option %s: %s\n\n",
+ poptBadOption(pc, 0), poptStrerror(opt));
+ poptPrintUsage(pc, stderr, 0);
+ return 1;
+ }
+ }
+
+ if (opt_version) {
+ puts(VERSION""DISTRO_VERSION""PRERELEASE_VERSION);
+ return 0;
+ }
+
+ if (opt_daemon && opt_interactive) {
+ fprintf(stderr, "Option -i|--interactive is not allowed together with -D|--daemon\n");
+ poptPrintUsage(pc, stderr, 0);
+ return 1;
+ }
+
+ if (!opt_daemon && !opt_interactive) {
+ opt_daemon = 1;
+ }
+
+ poptFreeContext(pc);
+
+ /* 1. Init server and sockets
+ * 2. Create thread pools and queues
+ * 3. Create mainloop and start serving clients
+ * 4. ...
+ * 5. Profit
+ */
+
+ return 0;
+}