softseek lists old version of dwun and says it's under the GNU GPL. (It's under an MIT-style license). ping doesn't return 0 for success on all systems. managed to get two dwunprepend and tail's to still be running simultaneously report error if close() or fclose fails ~ somewhat done Answer "why not diald?" on dwun.sourceforge.net. We should wait for pre_commandon to exit before running commandon. ->must first be sure everyone has added a & to scripts that we shouldn't wait for. [see state.c, WAIT_FOR_PRE_COMMANDON] Make parse.h stuff dynamically allocated (linked lists), and allow to be configured from rcfile. ->make rcfile parser much more powerful. ->http://www.enjoy.ne.jp/~gm/program/parsecfg/ Register port 5540 with IANA. Re-implement "fatal admin". We will need to say something other than "#Connect failed" so that clients don't disconnect. (How about "#Connecting paused" and instruct admin to send a site-specific message to the users). PACKAGING --------- Put dwun{getgroup,log,prepend} in /usr/lib/dwun. (libexec?) Get deb included in debian main. ->will have to register binaries without manpages as bugs and then uncomment dh_undocumented in debian/rules. ->Is /var/run/dwunlog.pid okay? Get RPM into distros. Send FreeBSD ports report in. Check RPM runlevels and priorities. RPM doesn't identify /usr/doc stuff as "%doc"umentation. BUGS ---- May not be able to getopt twice (main.c) with SunOS? (Unconfirmed). Symptoms would be after a RESTART, command-line arguments are messed up. Possible race condition where we can get "#Connect failed" printed twice in a row. (When "redials 0" is used and we receive a SIGINT and immediately reconnect). [can no longer reproduce] 'set -m' in dwunlog in FreeBSD sh causes "sh: can't access tty; job control turned off" error. Apart from that, script works in that shell. onconnect/ondisconnect document/remove 1024 character command limit. ->shell probably has similar limit anyway. IDEAS ----- * option for only n connections per username. * option to use authfile read-only. * make ISDN work better (with redialing etc.) * with fatal commandon error, we may set all to disconnected before tail sends stuff to %%con. (So users miss the reason for the fatal error). (Note that even if we send message to %%all, most clients will abort when they see "#Connect failed" and won't wait for any future messages). * allow different ports along with multiple binds. e.g. "bind 127.0.0.1:8000 192.168.1.1:5540" * dwunlog to have multiple patterns (e.g. match lines with both "pppd[", "chat["). * investigate ptrdiff_t for difference between two pointers (portability) (socket.c) * real sessions? (multiple connections with multiple modems) On "#Connect failed" with many clients, we will run many on_disconnect's. ->need to re-implement "fatal admin". [It is unlikely that a large number of clients would all decide to connect at the same time and then get "#Connect failed"]. MS_INVALIDATE for mmap for when disk-image changed. Would also need to update authfile->len and lock access to the authfile. Documentation: * dwunlog requires job control /bin/sh. * check that ISDN instructions work. Reliability: * write regression tests. * reconnect if commandon has been running for n seconds without us receiving a signal. Misc: * implement -r in dwunmakeauth. * clean up pipe_msg_buf by having variable arguments. [size_t datalen, char *data] * with "fatal user" new users should have to issue CONNECT twice to force a redial (not practical given that the clients always close the connection before CONNECT'ing again). * pass a number instead of a string for username. We can remove the username length limit this way. [or just use the variable arg thing] Security: * encrypt passwords when sent across the network. ->how APOP does it. (RFC1939 for APOP, RFC1321 for MD5). * (get/set)rlimit max core file size to 0 [only in child.c?] (you should be running dwun under a username that can't create files anyway if you're concerned about core-file security). * dwunmakeauth could test against cracklib.