X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/1632959187e9c7d8946126914af99270fc14d40a..d9bc63a10d0978d9a5222cf7be74044e55f409b7:/hotline/access.go diff --git a/hotline/access.go b/hotline/access.go index ae72780..179941f 100644 --- a/hotline/access.go +++ b/hotline/access.go @@ -1,49 +1,44 @@ package hotline -import ( - "encoding/binary" - "math/big" -) - const ( - 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 - accessSendPrivMsg = 19 // Messaging: Can Send Messages - 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 + 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 @@ -52,10 +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 { - 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<