/* * This is a sample uptime server. All it does is tell you * how long the mud's been up, then disconnects the telnet * session. If your mud game port is 6666, this will be * on 6668. */ #include <network.h> int port = query_host_port()+2; void StartServer(); int SendUptime(int fd); void create(){ StartServer(); } void StartServer(){ int sockstat, listsock; listsock = socket_create(STREAM,"read_callback","close_callback"); if(listsock < 0){ debug("Couldn't create socket. errorcode: "+listsock); return; } sockstat = socket_bind(listsock,port); if(sockstat < 0){ debug("Couldn't bind socket. errorcode: "+sockstat); return; } sockstat = socket_listen(listsock,"listen_callback"); if(sockstat < 0){ debug("Couldn't listen on socket. errorcode: "+sockstat); return; } } static void listen_callback(int fd){ int sockstat = socket_accept(fd,"read_callback","write_callback"); if(sockstat < 0){ debug("Couldn't accept on socket. errorcode: "+sockstat); return; } debug("uptime server: listening."); SendUptime(sockstat); } static void close_callback(int fd){ debug("I'm wanting to close fd"+fd+" now."); } static mixed read_callback(int fd, mixed data){ debug("quitting. fd: "+fd+", "+identify(socket_status(fd))); debug(socket_close(fd)); return 1; } int SendUptime(int fd){ socket_write(fd, "\n"+mud_name()+" has been up "+time_elapsed(uptime())+"\n\n"); debug("socket_close: "+socket_close(fd)); return 1; }