From 1623b039b99d84d58f23f7eb92388a1b1d5fe731 Mon Sep 17 00:00:00 2001 From: Meegwun Southall Date: Thu, 1 Aug 2013 20:59:53 -0700 Subject: [PATCH] Added README, TODO, and some changes to Makefile and net.h for Solaris/OpenIndiana --- Makefile | 16 ++++++++-------- README | 26 ++++++++++++++++++++++++++ TODO | 13 +++++++++++++ bcast | Bin 0 -> 60036 bytes net.h | 4 ++++ 5 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 README create mode 100644 TODO create mode 100755 bcast diff --git a/Makefile b/Makefile index 04d1c56..8f4e4cf 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,3 @@ -OUT = bcast PREFIX=./ OBJS = main.o net.o common.o CON_OBJS = con/console.o @@ -6,12 +5,16 @@ CC = gcc DEBUG = -g CFLAGS = -Wall -c $(DEBUG) LFLAGS = -Wall $(DEBUG) +ifeq ($(OS),Windows_NT) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),SunOS) + LFLAGS += -lsocket -lnsl + endif +endif X11_OBJS = x11/x11.o X11_LFLAGS = -L/usr/X11R6/lib -lX11 -$(OUT): $(CON_OBJS) $(OBJS) - $(CC) $(OBJS) $(CON_OBJS) $(LFLAGS) -o $(OUT) - ccast: $(OBJS) $(CON_OBJS) $(CC) $(OBJS) $(CON_OBJS) $(LFLAGS) -o ccast @@ -21,10 +24,7 @@ xcast: $(OBJS) $(X11_OBJS) all: bcast ccast xcast clean: - rm $(OBJS) $(CON_OBJS) $(X11_OBJS) ccast xcast $(OUT) - -install: - cp $(OUT) $(PREFIX)/$(OUT) + rm $(OBJS) $(CON_OBJS) $(X11_OBJS) ccast xcast net.o: net.c net.h macros.h $(CC) $(CFLAGS) -c net.c diff --git a/README b/README new file mode 100644 index 0000000..a2abaf8 --- /dev/null +++ b/README @@ -0,0 +1,26 @@ +---- info ---- +Bcast is a decentralized and LAN-based communication program that is focused on minimalism, efficiency, and, to some degree, modularity. It supports the following network communication methods: + + UDP broadcasting, for chat-style and "broad" communication + *INCOMPLETE* UDP multicast, for finer control and higher efficiency than broadcasting + *INCOMPLETE* UDP peer-to-peer, for non-TCP based direct comms + *INCOMPLETE* TCP sockets, for direct peer-to-peer communication + +In comparison to most communication programs geared towards decentralization, bcast attempts to separate the user interface from the networking code as much as is possible. This enables multiple frontends to easily be developed for almost any platform. + +Even further, bcast provides peer-to-peer or peer-to-group encryption via a trusted network/shared password scheme - in the case of a direct peer-to-peer comm, following the initial handshaking procedure encrypted with the trusted key, a new, temporary key is agreed upon and used for future communication between those peers. + +---- compiling ---- + +At the moment bcast compiles into the following binaries: + ccast: primary client + Fully-supported terminal client, relies on nothing more than an + ANSI-compliant terminal interface - colors optional + xcast: + state: in-complete stub, basic interface w/ buttons + Fully-supported X11 client, relies on nothing more than Xlib + +To compile either, simply type: + make ccast +or + make xcast diff --git a/TODO b/TODO new file mode 100644 index 0000000..c824bf4 --- /dev/null +++ b/TODO @@ -0,0 +1,13 @@ + * direct messaging, both TCP sockets and UDP + * various conditional requests, such as PING, etc. + * multicast message type + * multi-packet messages + * file transferrals + * multiple message "modes," such as encrypted, unencrypted + * custom tunneling interface, possibly + + * Fully-working X11 interface + * Windows interfaces + * possibly make a non-select() and non-ANSI derivative of ccast + * GDI (I think?) + * OS X interface (lower priority, due to terminal + x11 support) diff --git a/bcast b/bcast new file mode 100755 index 0000000000000000000000000000000000000000..e3bf32611f9df89006cc14841a5b21fee108c84a GIT binary patch literal 60036 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 XxZE^UklXD5k(tN9*^rQL%9#HT #include #include + #if defined (sun) + /* For Solaris 2.6, as it lacks SIOCGIFCONF */ + #include + #endif #endif #include