]>
Commit | Line | Data |
---|---|---|
6988a057 JH |
1 | package hotline |
2 | ||
3 | import ( | |
4 | "encoding/binary" | |
5 | "math/big" | |
6 | ) | |
7 | ||
8 | const ( | |
1f34616e JH |
9 | accessDeleteFile = 0 // File System Maintenance: Can Delete Files |
10 | accessUploadFile = 1 // File System Maintenance: Can Upload Files | |
11 | accessDownloadFile = 2 // File System Maintenance: Can Download Files | |
12 | accessRenameFile = 3 // File System Maintenance: Can Rename Files | |
13 | accessMoveFile = 4 // File System Maintenance: Can Move Files | |
14 | accessCreateFolder = 5 // File System Maintenance: Can Create Folders | |
15 | accessDeleteFolder = 6 // File System Maintenance: Can Delete Folders | |
16 | accessRenameFolder = 7 // File System Maintenance: Can Rename Folders | |
17 | accessMoveFolder = 8 // File System Maintenance: Can Move Folders | |
18 | accessReadChat = 9 // Chat: Can Read Chat | |
19 | accessSendChat = 10 // Chat: Can Send Chat | |
20 | accessOpenChat = 11 // Chat: Can Initial Private Chat | |
21 | accessCloseChat = 12 // Present in the Hotline 1.9 protocol documentation, but seemingly unused | |
22 | accessShowInList = 13 // Present in the Hotline 1.9 protocol documentation, but seemingly unused | |
23 | accessCreateUser = 14 // User Maintenance: Can Create Accounts | |
24 | accessDeleteUser = 15 // User Maintenance: Can Delete Accounts | |
25 | accessOpenUser = 16 // User Maintenance: Can Read Accounts | |
26 | accessModifyUser = 17 // User Maintenance: Can Modify Accounts | |
27 | accessChangeOwnPass = 18 // Present in the Hotline 1.9 protocol documentation, but seemingly unused | |
28 | accessSendPrivMsg = 19 // Messaging: Can Send Messages | |
29 | accessNewsReadArt = 20 // News: Can Read Articles | |
30 | accessNewsPostArt = 21 // News: Can Post Articles | |
31 | accessDisconUser = 22 // User Maintenance: Can Disconnect Users (Note: Turns username red in user list) | |
32 | accessCannotBeDiscon = 23 // User Maintenance: Cannot be Disconnected | |
33 | accessGetClientInfo = 24 // User Maintenance: Can Get User Info | |
34 | accessUploadAnywhere = 25 // File System Maintenance: Can Upload Anywhere | |
35 | accessAnyName = 26 // Miscellaneous: Can User Any Name | |
36 | accessNoAgreement = 27 // Miscellaneous: Don't Show Agreement | |
37 | accessSetFileComment = 28 // File System Maintenance: Can Comment Files | |
38 | accessSetFolderComment = 29 // File System Maintenance: Can Comment Folders | |
39 | accessViewDropBoxes = 30 // File System Maintenance: Can View Drop Boxes | |
40 | accessMakeAlias = 31 // File System Maintenance: Can Make Aliases | |
41 | accessBroadcast = 32 // Messaging: Can Broadcast | |
42 | accessNewsDeleteArt = 33 // News: Can Delete Articles | |
43 | accessNewsCreateCat = 34 // News: Can Create Categories | |
44 | accessNewsDeleteCat = 35 // News: Can Delete Categories | |
45 | accessNewsCreateFldr = 36 // News: Can Create News Bundles | |
46 | accessNewsDeleteFldr = 37 // News: Can Delete News Bundles | |
6988a057 JH |
47 | ) |
48 | ||
a0241c25 JH |
49 | type accessBitmap [8]byte |
50 | ||
51 | func (bits *accessBitmap) Set(i int) { | |
52 | bits[i/8] |= 1 << uint(7-i%8) | |
53 | } | |
54 | ||
55 | // authorize checks if 64 bit access slice contain has accessBit set | |
56 | // TODO: refactor to use accessBitmap type | |
6988a057 | 57 | func authorize(access *[]byte, accessBit int) bool { |
a0241c25 | 58 | bits := big.NewInt(int64(binary.BigEndian.Uint64(*access))) |
6988a057 | 59 | |
a0241c25 | 60 | return bits.Bit(63-accessBit) == 1 |
6988a057 | 61 | } |