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 0000000..e3bf326 Binary files /dev/null and b/bcast differ diff --git a/net.h b/net.h index 2e7b802..e4b5989 100644 --- a/net.h +++ b/net.h @@ -18,6 +18,10 @@ Net #include #include #include + #if defined (sun) + /* For Solaris 2.6, as it lacks SIOCGIFCONF */ + #include + #endif #endif #include