]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/access.go
Merge pull request #92 from jhalter/fix_login_regression
[rbdr/mobius] / hotline / access.go
index bc3cb0d8451e278e685959cd1150c66cba442a67..90740fc16fafd77e75338b52252061afdf00b52f 100644 (file)
@@ -1,50 +1,44 @@
 package hotline
 
-import (
-       "encoding/binary"
-       "math/big"
-)
-
 const (
-       // 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
@@ -53,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<<uint(7-i%8)) != 0
 }