summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2008-10-08 08:04:48 -0700
committerPixel <pixel@nobis-crew.org>2008-10-08 08:04:48 -0700
commit691aa723838e2fd00a22a6fb412f8c083d6f535a (patch)
tree3061df11acf593645bf1ff757f5356173fb4d4af /src
parent140fb7c24aed34e16c51b7b2f08b1412f4927692 (diff)
Cleaning up the command line a bit, and adding the mail server.
Diffstat (limited to 'src')
-rw-r--r--src/lua-interface.cpp66
1 files changed, 41 insertions, 25 deletions
diff --git a/src/lua-interface.cpp b/src/lua-interface.cpp
index dccf0d8..bab642b 100644
--- a/src/lua-interface.cpp
+++ b/src/lua-interface.cpp
@@ -37,6 +37,7 @@
#include <BLua.h>
#include <LuaCommandLine.h>
#include <HttpServ.h>
+#include <MailServer.h>
#include <Message.h>
#include <Form.h>
#include <BRegex.h>
@@ -183,7 +184,7 @@ int my_getc (FILE * stream)
}
#endif
-bool interactive = false, server = false;
+bool interactive = false, hserver = false, tserver = false, mserver = false;
class threaded_Lua : public Lua {
public:
@@ -432,9 +433,9 @@ struct option long_options[] = {
{"built-in", 0, NULL, 'b'},
{"probe", 0, NULL, 'p'},
{"log", 1, NULL, 'g'},
- {"server", 0, NULL, 's'},
- {"hport", 1, NULL, 'h'},
- {"tport", 1, NULL, 't'},
+ {"mail", 2, NULL, 'm'},
+ {"server", 2, NULL, 's'},
+ {"telnet", 2, NULL, 't'},
{"server_fname", 1, NULL, 'f'},
#ifdef HAVE_FORK
{"daemonize", 1, NULL, 'z'},
@@ -548,10 +549,10 @@ void showhelp(bool longhelp = false) {
" -e <cmd> to execute this single command in LUA.\n"
" -b to force the use of the built-in lua-interface.lua\n"
" -g <log> to log into a file.\n"
-" -s start the built-in http server.\n"
-" -p <hp> http port to bind to.\n"
-" -t <tp> telnet port to bind to.\n"
-" -f <fil> filename of http server to use (server.lua by default).\n"
+" -m [mp] start the mail server on port mp (2500 by default).\n"
+" -s [hp] start the built-in http server on port hp (1500 by default).\n"
+" -t [tp] start the telnet server, on port tp (1550 by default).\n"
+" -f <fil> filename of server code to use (server.lua by default).\n"
#ifdef HAVE_FORK
" -z daemonize; incompatible with -i; use with -g.\n"
#endif
@@ -710,7 +711,7 @@ virtual int startup() throw (GeneralException) {
bool strip = true, todo = false, write = false, builtin = false, daemonize = false;
char * file = 0, * output = 0, * compile = 0, * exec = 0;
Lua * L = 0;
- String hport = "1500", tport = "1550";
+ String hport = "1500", tport = "1550", mport = "2500";
pthread_t interactive_thread;
verbosity = M_WARNING;
@@ -719,7 +720,7 @@ virtual int startup() throw (GeneralException) {
/* Let's start parsing options */
- while ((c = getopt_long(argc, argv, "Hhva:c:dile:bg:st:p:f:z", long_options, NULL)) != EOF) {
+ while ((c = getopt_long(argc, argv, "Hhva:c:dile:bg:m::s::t::f:z", long_options, NULL)) != EOF) {
switch (c) {
case 'h':
case 'H':
@@ -756,14 +757,22 @@ virtual int startup() throw (GeneralException) {
printer = new lua_interface_printer_t(new Output(optarg));
break;
case 's':
- server = true;
+ hserver = true;
todo = true;
+ if (optarg)
+ hport = optarg;
break;
- case 'p':
- hport = optarg;
+ case 'm':
+ mserver = true;
+ todo = true;
+ if (optarg)
+ mport = optarg;
break;
case 't':
- tport = optarg;
+ tserver = true;
+ todo = true;
+ if (optarg)
+ tport = optarg;
break;
case 'f':
server_fname = optarg;
@@ -856,12 +865,8 @@ virtual int startup() throw (GeneralException) {
}
#endif
- if (server) {
- TaskMan::Init();
- }
-
if (interactive) {
- if (server) {
+ if (mserver || tserver || hserver) {
pthread_create(&interactive_thread, NULL, interactive_prompt, L->thread(true));
L->pop();
} else {
@@ -869,18 +874,29 @@ virtual int startup() throw (GeneralException) {
}
}
- if (server) {
+ if (mserver || hserver || tserver) {
+ TaskMan::Init();
+ L->load(&Input(server_fname));
+ }
+
+ if (hserver) {
HttpServ * httpserv = new HttpServ(new Message("Welcome", "Welcome.", "start"), hport.to_int(), "Lua Interface");
new Form("LUACall", "luacallform", "Enter the function name to call", LUACall_Names, LUACall_Invites, LUACall_Defaults, LUACall_Lists, LUACall_Descs, 1, new LUACall(L));
new ReloadLUA(L);
+ }
+
+ if (tserver) {
new LuaCommandLine(L, tport.to_int());
- L->load(&Input(server_fname));
-
- StartTaskLoop(0);
+ }
+
+ if (mserver) {
+ new MailServer(mport.to_int());
}
- if (interactive && server) {
- pthread_join(interactive_thread, NULL);
+ if (mserver || hserver || tserver) {
+ StartTaskLoop(0);
+ if (interactive)
+ pthread_join(interactive_thread, NULL);
}
return 0;