diff options
-rw-r--r-- | server/Makefile.am | 4 | ||||
-rw-r--r-- | server/miav_server.cc | 66 | ||||
-rw-r--r-- | server/miav_server.h | 7 | ||||
-rw-r--r-- | server/mov_encoder_writer.cc | 4 | ||||
-rw-r--r-- | server/server.cc | 26 |
5 files changed, 74 insertions, 33 deletions
diff --git a/server/Makefile.am b/server/Makefile.am index fb667dd..7d0ae05 100644 --- a/server/Makefile.am +++ b/server/Makefile.am @@ -1,6 +1,4 @@ -AM_CXXFLAGS := -I../lib -L../lib \ - $(CXXFLAGS) $(EXTRA_CXXFLAGS) \ - -DETC=\"$(prefix)/etc/miav\" +AM_CXXFLAGS := bin_PROGRAMS = miav_server diff --git a/server/miav_server.cc b/server/miav_server.cc index b1dfcac..28c45b6 100644 --- a/server/miav_server.cc +++ b/server/miav_server.cc @@ -24,7 +24,8 @@ * along with MIaV; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include <config.h> +// For ETC +#include "config.h" #include "miav_server.h" #include "miav_config.h" @@ -36,6 +37,7 @@ #include "server.h" #include "socket.h" +#include "network.h" #include <signal.h> #include <errno.h> @@ -56,24 +58,27 @@ static const char usage_str[] = "Usage: %s [options]\n" "Options:\n" -" -c file Read configfile from 'file'\n" -" -i Run in interactive mode (non-background mode)\n" -" -h This message\n" +" -c file Read configfile from 'file'\n" +" -f Run in foreground mode (non-background mode)\n" +" -u user Run as 'user' (overrides the configfile)\n" +" -g group Run as 'group' (overrides the configfile)\n" +" -h This message\n" ; -static char *config_file = ETC"/miav.conf"; -/** - * This function starts the MIaV server. - */ int main(int argc, char *argv[]) { + char *config_file = ETC"/miav.conf"; + int optc; int lose = 0; - bool interactive = false; + bool foreground = false; + + char *user_opt = NULL; + char *group_opt = NULL; // Parse the commandline - while((optc = getopt(argc, argv, "c:ih")) != EOF) { + while((optc = getopt(argc, argv, "c:fhu:g:")) != EOF) { switch(optc) { case 'c': config_file = strdup(optarg); @@ -82,8 +87,22 @@ int main(int argc, char *argv[]) return 1; } break; - case 'i': - interactive = true; + case 'u': + user_opt = strdup(optarg); + if(!user_opt) { + fprintf(stderr, "Fatal: out of memory\n"); + return 1; + } + break; + case 'g': + group_opt = strdup(optarg); + if(!group_opt) { + fprintf(stderr, "Fatal: out of memory\n"); + return 1; + } + break; + case 'f': + foreground = true; break; case 'h': fprintf(stdout, usage_str, argv[0]); @@ -107,39 +126,44 @@ int main(int argc, char *argv[]) InfoConsole info; MIaV::initInfo(&info); - string *user = cfg.readString("server_user"); - string *group = cfg.readString("server_group"); - + string user; + if(user_opt) user = string(user_opt); + else user = *cfg.readString("server_user"); + + string group; + if(group_opt) group = string(group_opt); + else group = *cfg.readString("server_group"); + // Fetch user id int uid = -1; struct passwd *p = getpwent(); while(p) { - if(strcmp(p->pw_name, user->c_str()) == 0) uid = p->pw_uid; + if(strcmp(p->pw_name, user.c_str()) == 0) uid = p->pw_uid; p = getpwent(); } if(uid == -1) { - fprintf(stderr, "Could not find user \"%s\" in /etc/passwd file.\n", user->c_str()); + fprintf(stderr, "Could not find user \"%s\" in /etc/passwd file.\n", user.c_str()); } // Fetch group id int gid = -1; struct group *g = getgrent(); while(g) { - if(strcmp(g->gr_name, group->c_str()) == 0) gid = g->gr_gid; + if(strcmp(g->gr_name, group.c_str()) == 0) gid = g->gr_gid; g = getgrent(); } if(gid == -1) { - fprintf(stderr, "Could not find group \"%s\" in /etc/group file.\n", group->c_str()); + fprintf(stderr, "Could not find group \"%s\" in /etc/group file.\n", group.c_str()); } - if(!interactive) { + if(!foreground) { fprintf(stderr, "Entering daemon mode\n"); daemon(0,0); signal (SIGTERM, SIG_IGN); signal (SIGINT, SIG_IGN); signal (SIGHUP, SIG_IGN); } else { - fprintf(stderr, "Running interactive\n"); + fprintf(stderr, "Running in foreground mode.\n"); } int port = MIaV::config->readInt("server_port"); diff --git a/server/miav_server.h b/server/miav_server.h index 6d5068a..eeeccf6 100644 --- a/server/miav_server.h +++ b/server/miav_server.h @@ -24,14 +24,7 @@ * along with MIaV; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include "config.h" #ifndef __LIBMIAV_H__ #define __LIBMIAV_H__ -#include "util.h" - -#include "network.h" -#include "socket.h" -#include "queue.h" - #endif/*__LIBMIAV_H__*/ diff --git a/server/mov_encoder_writer.cc b/server/mov_encoder_writer.cc index a8eb190..8f432ee 100644 --- a/server/mov_encoder_writer.cc +++ b/server/mov_encoder_writer.cc @@ -24,7 +24,9 @@ * along with MIaV; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include <config.h> +// For ETC +#include "config.h" + #include "mov_encoder_writer.h" #include <sys/types.h> diff --git a/server/server.cc b/server/server.cc index 9af22d9..27e5eef 100644 --- a/server/server.cc +++ b/server/server.cc @@ -25,7 +25,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "server.h" -#include "miav_server.h" + +#include "network.h" #include <stdio.h> #include <stdlib.h> @@ -57,6 +58,28 @@ void newConnection(Socket *socket) { + Network network(socket); + + MIaV::info->info("CONNECTION OPENED"); + MIaV::info->info("New connection (%s)", inet_ntoa(socket->socketaddr.sin_addr)); + + Frame *frame; + while((frame = network.recvFrame())) { + + sleep(1); + + if(frame->vframe) delete frame->vframe; + if(frame->aframe) delete frame->aframe; + delete frame; + } + + MIaV::info->info("CONNECTION CLOSED"); +} + + +/* +void newConnection(Socket *socket) +{ char cpr[256]; char clientip[64]; bool hasCpr = false; @@ -135,3 +158,4 @@ void newConnection(Socket *socket) MIaV::info->info("CONNECTION CLOSED"); } +*/ |