)
const (
- accessAlwaysAllow = -1 // Some transactions are always allowed
+ accessAlwaysAllow = -1 // Some transactions are always allowed
// File System Maintenance
accessDeleteFile = 0
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
+ // 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
)
+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
}