To create new wiki account, please join us on #znc at freenode or efnet and ask admins to create a wiki account for you.

User:Psychon/ToDo

From ZNC
Jump to: navigation, search

Useful commands

Some commands which show where something needs to be done:

  1. Find long functions
    awk '/^[a-zA-Z]/{f=$0;t=0} /^}/{print t,f} 1 {t++}' *cpp *h|sort -n
  2. Find long lines
    awk '{len = length($0); print len " " FILENAME ":" FNR " " $0 }' *.cpp *.h | sort -n
  3. Find too deep nesting
    cat *.cpp *.h | tr "\t" "@" |grep @@@@@@@@@

ToDo

This list is ordered by importance / easiness. The top-most item should be rather item and rather important, the last one shouldn't be either.

  1. delete .znc/users/<deleted user>/**.registry and purge empty directories on user deletion
  2. blockuser:
    1. Usable user interface (/msg *blockuser)
    2. Saving stuff across restarts / reloads
    3. Only block for x mins / hours / days
  3. <something> that causes only incoming DCC to be bounced (makes sense for NAT routers, doesnt it?)
  4. <something> that sends a DCC to some specific client (instead of 'to all clients')
  5. <+uttercunt> The poll about 'should admins be allowed to access any file with /msg *status send/get' ended. <+uttercunt> 2 votes for Yes and 5 votes for no
  6. Teach schat that spaces in nicks are a bad idea
  7. ZNC-Extra: Remove notify_connect, because adminlog does the same better?
  8. notice from *status for failed logins (broadcast to admin and notice to user)
  9. What if a client tries to connect as 'peter', but we are known as 'pete' on IRC. Are we sure clients get this right from raw 001?
  10. Close() should be replaced with Close(CLT_AFTERWRITE)
  11. schat really could need some being-cleaned-up
  12. Remove savebuff or make it look nicer or something
  13. Let the watch module save it settings and reload on reload :) sf.net #1632414
  14. CChan: When bufferCount changes (to a lower value), we have to clean up the cached buffer
  15. Something like CSocket::TryWriteFlush() or something instead of that ugly usleep()?
  16. add a module that does some chroot()ing and setuid()ing (See chroot module in znc-extra) sf.net #1705097
  17. Disable keep nick etc timer if they are not needed
  18. DynamicSelectLoop(1000, ..); -> busy loop
  19. Handle select() errors (has recently lead to a busy loop on *bsd)
  20. move dccbounce into a module
  21. module dependencies
  22. web-based --makeconf (as suggested by SHiZNO)
  23. Merging in all those git branches I created would be nice
  24. Sort vhosts alphabetically and remove dupe vhosts.

Your ToDo proposals

If you want to add own entries, do this here (so I can see there are new items). I will then move it to the above list once I think I'm not doing that now :P

  • Add a separate IPv4 bind for DCC, so when using IPv6 VHOST - DCC will use IPv6 and when using IPv4 VHOST - DCC will use the IPv4. Current situation is that DCC will just use the VHOST (Uriel)
  • Support for massive buffers (like 5000 lines per channel/PM session) {added by synth}
    • Keep only a small segment in memory (50 lines or whatever).
    • Write the rest to flatfile(s), logging (useful/informative) IRC client-style events such as 'connection to server lost,' etc.
    • Suggested flatfile handling provisions:
      • If ZNC is told to die by the user, let the user choose (perhaps via IRC connection) to wipe flatfile, preserve and reload flatfile when ZNC is started, or make IRC logs:
        • Filename something like chanName+date
        • Format similar to popular IRC clients' logs. I.e. strip the flatfile of data that may be unintelligible/irrelevant to the end-user.
      • If ZNC process is killed or crashes, let the user choose (perhaps via IRC connection at login) to load, log, or wipe pre-existing flatfile.
        • If user elects to load/log, append with something like "Recovered by ZNC on [date]."
  • Altnick / auto regain nick feature enhancement {added by synth}
    • Rather than altnick, allow the user to create an ordered list of one or more nicks.
    • Add option to auto regain nick feature:
      • If primary nick [first entry in nicklist] is taken, ZNC should:
        • Try to regain only primary nick OR:
        • Cycle through the nicklist to attempt to regain nicks higher on the list. E.g. say ZNC holds nick 5 (primary=1):
          • Cycle through list beginning at n=1 and ending at n=(current-1)=4 with: /nick nick_n.
          • If a nick change is successful:
            • Stop the auto nick regain procedure if n=1
            • Update cycle bounds to n:[1,(current-1)]
  • Support for defining portrange for ZNC to listen on for DCC connections. Preferably DCC SEND and DCC CHAT listening portranges can be defined separately. {added by synth}
    • some way to open the /adduser page with the settings (not password, of course) of another user filled in. perhaps add to the /adduser page a drop-down box with items like {"Clone user..." | user1 | user2 | ... | userN }. selecting a user would put that user's settings into the /adduser page's fields.
      • Might be implemented as "templates" (e. g. "freenode user", "user with those modules and those buffer settings") (Xjs)
  • check if an new path to the pidfile / ident config file is given on rehash and write it there (maybe delete the old one?)
  • Enable all channels command
  • Add an option to the extras -- Log module that allows the user to sort their IRC logs into folders named after the channel they are in. Useful to those on multiple channels on one network, particularly when automating pisg to run for a channel.

From Wishlist

This might be a list of requested modules, module improvements and so on so that any developer that has a little bit freetime and like to do something "small" beside the znc-improvement can pick some request ...

  • perform-module improvement with a fusion of efreak perform modules; additional arguments could be 1/2/3 after /msg *perform add so 1 would be on ZNC connect, 2 on client connect and 3 on last client disconnect, webmod-ability would be great too
  • notes-module improvement that you can add a date after that the note would be replayed, notes that are only showed when requested and notes that are only viewed to admins if they look at the user-account via webmodule might be helpful
  • Buffextras-module could be used as channel-flag, so you can select where you want to see joins/parts/...