X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/decc2fbf5db4a05aec93462ad35d890930bddd04..65b6e0c3f4e209ac2776647521b81df48050a36a:/hotline/access.go?ds=sidebyside diff --git a/hotline/access.go b/hotline/access.go index 1cdbeed..90740fc 100644 --- a/hotline/access.go +++ b/hotline/access.go @@ -1,52 +1,44 @@ package hotline -import ( - "encoding/binary" - "math/big" -) - const ( - accessAlwaysAllow = -1 // Some transactions are always allowed - - // File System Maintenance - accessDeleteFile = 0 - accessUploadFile = 1 - accessDownloadFile = 2 // Can Download Files - accessRenameFile = 3 - accessMoveFile = 4 - accessCreateFolder = 5 - accessDeleteFolder = 6 - accessRenameFolder = 7 - accessMoveFolder = 8 - accessReadChat = 9 - accessSendChat = 10 - accessOpenChat = 11 - // accessCloseChat = 12 // Documented but unused? - // accessShowInList = 13 // Documented but unused? - accessCreateUser = 14 - accessDeleteUser = 15 - accessOpenUser = 16 - accessModifyUser = 17 - // accessChangeOwnPass = 18 // Documented but unused? - //accessSendPrivMsg = 19 // This doesn't do what it seems like it should do. TODO: Investigate - accessNewsReadArt = 20 - accessNewsPostArt = 21 - accessDisconUser = 22 // Toggles red user name in user list - accessCannotBeDiscon = 23 - accessGetClientInfo = 24 - //accessUploadAnywhere = 25 - //accessAnyName = 26 - //accessNoAgreement = 27 - //accessSetFileComment = 28 - //accessSetFolderComment = 29 - //accessViewDropBoxes = 30 - accessMakeAlias = 31 - accessBroadcast = 32 - accessNewsDeleteArt = 33 - accessNewsCreateCat = 34 - //accessNewsDeleteCat = 35 - accessNewsCreateFldr = 36 - //accessNewsDeleteFldr = 37 + accessDeleteFile = 0 // File System Maintenance: Can Delete Files + accessUploadFile = 1 // File System Maintenance: Can Upload Files + accessDownloadFile = 2 // File System Maintenance: Can Download Files + accessRenameFile = 3 // File System Maintenance: Can Rename Files + accessMoveFile = 4 // File System Maintenance: Can Move Files + accessCreateFolder = 5 // File System Maintenance: Can Create Folders + accessDeleteFolder = 6 // File System Maintenance: Can Delete Folders + accessRenameFolder = 7 // File System Maintenance: Can Rename Folders + accessMoveFolder = 8 // File System Maintenance: Can Move Folders + accessReadChat = 9 // Chat: Can Read Chat + accessSendChat = 10 // Chat: Can Send Chat + accessOpenChat = 11 // Chat: Can Initial Private Chat + // accessCloseChat = 12 // Present in the Hotline 1.9 protocol documentation, but seemingly unused + // accessShowInList = 13 // Present in the Hotline 1.9 protocol documentation, but seemingly unused + accessCreateUser = 14 // User Maintenance: Can Create Accounts + accessDeleteUser = 15 // User Maintenance: Can Delete Accounts + accessOpenUser = 16 // User Maintenance: Can Read Accounts + accessModifyUser = 17 // User Maintenance: Can Modify Accounts + // accessChangeOwnPass = 18 // Present in the Hotline 1.9 protocol documentation, but seemingly unused + accessNewsReadArt = 20 // News: Can Read Articles + accessNewsPostArt = 21 // News: Can Post Articles + accessDisconUser = 22 // User Maintenance: Can Disconnect Users (Note: Turns username red in user list) + accessCannotBeDiscon = 23 // User Maintenance: Cannot be Disconnected + accessGetClientInfo = 24 // User Maintenance: Can Get User Info + accessUploadAnywhere = 25 // File System Maintenance: Can Upload Anywhere + accessAnyName = 26 // Miscellaneous: Can User Any Name + accessNoAgreement = 27 // Miscellaneous: Don't Show Agreement + accessSetFileComment = 28 // File System Maintenance: Can Comment Files + accessSetFolderComment = 29 // File System Maintenance: Can Comment Folders + accessViewDropBoxes = 30 // File System Maintenance: Can View Drop Boxes + accessMakeAlias = 31 // File System Maintenance: Can Make Aliases + accessBroadcast = 32 // Messaging: Can Broadcast + accessNewsDeleteArt = 33 // News: Can Delete Articles + accessNewsCreateCat = 34 // News: Can Create Categories + accessNewsDeleteCat = 35 // News: Can Delete Categories + accessNewsCreateFldr = 36 // News: Can Create News Bundles + accessNewsDeleteFldr = 37 // News: Can Delete News Bundles + accessSendPrivMsg = 40 // Messaging: Can Send Messages (Note: 1.9 protocol doc incorrectly says this is bit 19) ) type accessBitmap [8]byte @@ -55,13 +47,6 @@ func (bits *accessBitmap) Set(i int) { bits[i/8] |= 1 << uint(7-i%8) } -// authorize checks if 64 bit access slice contain has accessBit set -// TODO: refactor to use accessBitmap type -func authorize(access *[]byte, accessBit int) bool { - if accessBit == accessAlwaysAllow { - return true - } - bits := big.NewInt(int64(binary.BigEndian.Uint64(*access))) - - return bits.Bit(63-accessBit) == 1 +func (bits *accessBitmap) IsSet(i int) bool { + return bits[i/8]&(1<