##
-## (c) 2009 by Art Cancro and citadel.org
+## (c) 2009-2012 by Art Cancro and citadel.org
## This program is released under the terms of the GNU General Public License v3.
-##/
+##
bin_PROGRAMS = ctdlsh
-ctdlsh_SOURCES = main.c sockets.c ctdlsh.h datetime.c passwd.c shutdown.c
+ctdlsh_SOURCES = main.c sockets.c ctdlsh.h datetime.c passwd.c shutdown.c who.c
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_ctdlsh_OBJECTS = main.$(OBJEXT) sockets.$(OBJEXT) \
- datetime.$(OBJEXT) passwd.$(OBJEXT) shutdown.$(OBJEXT)
+ datetime.$(OBJEXT) passwd.$(OBJEXT) shutdown.$(OBJEXT) \
+ who.$(OBJEXT)
ctdlsh_OBJECTS = $(am_ctdlsh_OBJECTS)
ctdlsh_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-ctdlsh_SOURCES = main.c sockets.c ctdlsh.h datetime.c passwd.c shutdown.c
+ctdlsh_SOURCES = main.c sockets.c ctdlsh.h datetime.c passwd.c shutdown.c who.c
all: all-am
.SUFFIXES:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/passwd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shutdown.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockets.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/who.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
int cmd_datetime(int, char *);
int cmd_passwd(int, char *);
int cmd_shutdown(int, char *);
+int cmd_who(int, char *);
{ "date", cmd_datetime, "Print the server's date and time" },
{ "time", cmd_datetime, "Print the server's date and time" },
{ "passwd", cmd_passwd, "Set or change an account password" },
+ { "who", cmd_who, "Display a list of online users" },
{ "shutdown", cmd_shutdown, "Shut down the Citadel server" },
{ NULL, NULL, NULL }
};
--- /dev/null
+/*
+ * (c) 1987-2011 by Art Cancro and citadel.org
+ * This program is open source software, released under the terms of the GNU General Public License v3.
+ * It runs really well on the Linux operating system.
+ * We love open source software but reject Richard Stallman's linguistic fascism.
+ */
+
+#include "ctdlsh.h"
+
+
+int cmd_who(int server_socket, char *cmdbuf) {
+ char buf[1024];
+ char *t = NULL;
+
+ sock_puts(server_socket, "RWHO");
+ sock_getln(server_socket, buf, sizeof buf);
+ printf("%s\n", &buf[4]);
+ if (buf[0] != '1') {
+ return(cmdret_error);
+ }
+
+ printf( "Session User name Room From host\n");
+ printf( "------- ------------------------- ------------------- ------------------------\n");
+
+ while (sock_getln(server_socket, buf, sizeof buf), strcmp(buf, "000")) {
+
+//7872|Dampfklon| |p5DE44943.dip.t-dialin.net||1330016445|CHEK|.||||1
+
+ t = strtok(buf, "|"); /* session number */
+ printf("%-7d ", atoi(t));
+
+ t = strtok(NULL, "|");
+ printf("%-26s", t); /* user name */
+
+ t = strtok(NULL, "|"); /* room name */
+ printf("%-19s ", t);
+
+ t = strtok(NULL, "|"); /* from host */
+ printf("%-24s\n", t);
+ }
+
+ return(cmdret_ok);
+}