• src/sbbs3/userdat.c userdat.h

    From Rob Swindell to Git commit to sbbs/master on Saturday, November 21, 2020 15:44:43
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/00c56b2ae95be5f939ebad68
    Modified Files:
    src/sbbs3/userdat.c userdat.h
    Log Message:
    Use a more-liberal username matching algorithm

    - Ignore all non-trailing non-alphanumeric characters when comparing a string against a user's name. Previously, spaces and dots and underscores were mostly-treated as equivalent and white-space was sometimes compressed for comparison purposes (if the user name contained both spaces and dots). This updated algo helps to insure that deliberate or accidental name collisions cannot be created but also aids usability (e.g. users can make some minor cosmetic adjustments to their user name and still be considered the "same user" for most comparison purposes).
    - Terminate the comparison string at an '@' (ignore everything after). This resolves the FAQ of why users can't login with "username@domain" and aides some other username/address matching algorithms (e.g. in the mailserver). '@'s are illegal characters for usernames already.

    Expose the new algorithm via new function matchusername().
    Use the algorithm in matchuser() and lookup_user().

    Unrelated: don't lower-case the 'localuser' part of email addresses in usermailaddr() - cosmetic only.
  • From Rob Swindell to Git commit to main/sbbs/master on Sunday, December 13, 2020 03:30:25
    https://gitlab.synchro.net/main/sbbs/-/commit/12a11b6bc4905c5be3946004
    Modified Files:
    src/sbbs3/userdat.c userdat.h
    Log Message:
    Add getnodeclient() to read a node's client.ini file

    One weird thing is that client_t:
    - has just a const char* for the protocol, so that's strdup/free'd here (consider making this a char array to simplify this API)
    - does not have a socket descriptor, so that value is returned
    - does not have local addr/port info
  • From Rob Swindell to Git commit to main/sbbs/master on Friday, January 01, 2021 17:28:31
    https://gitlab.synchro.net/main/sbbs/-/commit/cf12bc723bec48c9ea7d706d
    Modified Files:
    src/sbbs3/userdat.c userdat.h
    Log Message:
    New user API functions to determine directory access

    can_access/upload/download and is_operator
    similar to what we already had defined for sub-boards
  • From Rob Swindell to Git commit to main/sbbs/master on Tuesday, April 13, 2021 22:57:34
    https://gitlab.synchro.net/main/sbbs/-/commit/7db3b623bd115c096f4a261d
    Modified Files:
    src/sbbs3/userdat.c userdat.h
    Log Message:
    Refactor putuserrec()

    This started with a Coverity issue (CID 33230) which got me looking at this function and wondering: why is str2 being NUL-terminated here? Why is the length of str2 to be calculated on successive lines? What is with this (long)((long)((long)((long)) typecast?

    This was some of the oldest code in Synchronet (along with a lot of the other functions in this file). I tried to keep as much intact as possible while still improving the logic and readability.
  • From Rob Swindell (in GitKraken) to Git commit to main/sbbs/master on Sunday, February 19, 2023 15:26:00
    https://gitlab.synchro.net/main/sbbs/-/commit/dd38606e246a2a4e2179d407
    Modified Files:
    src/sbbs3/userdat.c userdat.h
    Log Message:
    find_login_id() will now return 0 if login ID is an invalid user number

    If login by number is supported and a client attempts login with an invalid usernumber, don't log an error, e.g.
    mail 3264 SMTPS [46.148.x.x] !ERROR -2 getting data on user (6123)

    But rather treat it as an invalid login attempt.

    Also change lastuser() and total_users() to return int instead of uint. 2 billion users should be plenty.
  • From Rob Swindell (on Windows) to Git commit to main/sbbs/master on Wednesday, August 09, 2023 18:28:43
    https://gitlab.synchro.net/main/sbbs/-/commit/efdbc232d655709c4b3551dc
    Modified Files:
    src/sbbs3/userdat.c userdat.h
    Log Message:
    Add some helper functions for modifying node records in node.dab, atomically

    These should probably be moved (along with other node functions in this file) to nodedat.* some day.