)
const (
- accessAlwaysAllow = -1 // Some transactions are always allowed
-
// File System Maintenance
accessDeleteFile = 0
accessUploadFile = 1
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
+ // 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
accessBroadcast = 32
accessNewsDeleteArt = 33
accessNewsCreateCat = 34
- accessNewsDeleteCat = 35
- accessNewsCreateFldr = 36
- accessNewsDeleteFldr = 37
+ // accessNewsDeleteCat = 35
+ accessNewsCreateFldr = 36
+ // accessNewsDeleteFldr = 37
)
+type accessBitmap [8]byte
+
+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
- }
- accessBitmap := big.NewInt(int64(binary.BigEndian.Uint64(*access)))
+ bits := big.NewInt(int64(binary.BigEndian.Uint64(*access)))
- return accessBitmap.Bit(63-accessBit) == 1
+ return bits.Bit(63-accessBit) == 1
}