Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import
- asyncnet,
- streams
- type
- UserAccess* = object
- when cpuEndian == bigEndian:
- deleteFile* {.bitsize: 1.}: int
- uploadFile* {.bitsize: 1.}: int
- downloadFile* {.bitsize: 1.}: int
- renameFile* {.bitsize: 1.}: int
- moveFile* {.bitsize: 1.}: int
- createFolder* {.bitsize: 1.}: int
- deleteFolder* {.bitsize: 1.}: int
- renameFolder* {.bitsize: 1.}: int
- moveFolder* {.bitsize: 1.}: int
- readChat* {.bitsize: 1.}: int
- sendChat* {.bitsize: 1.}: int
- openChat* {.bitsize: 1.}: int
- closeChat* {.bitsize: 1.}: int
- showInList* {.bitsize: 1.}: int
- createUser* {.bitsize: 1.}: int
- deleteUser* {.bitsize: 1.}: int
- openUser* {.bitsize: 1.}: int
- modifyUser* {.bitsize: 1.}: int
- changeOwnPass* {.bitsize: 1.}: int
- sendPrivMsg* {.bitsize: 1.}: int
- newsReadArt* {.bitsize: 1.}: int
- newsPostArt* {.bitsize: 1.}: int
- disconUser* {.bitsize: 1.}: int
- cannotBeDiscon* {.bitsize: 1.}: int
- getClientInfo* {.bitsize: 1.}: int
- uploadAnywhere* {.bitsize: 1.}: int
- anyName* {.bitsize: 1.}: int
- noAgreement* {.bitsize: 1.}: int
- setFileComment* {.bitsize: 1.}: int
- setFolderComment* {.bitsize: 1.}: int
- viewDropBoxes* {.bitsize: 1.}: int
- makeAlias* {.bitsize: 1.}: int
- broadcast* {.bitsize: 1.}: int
- newsDeleteArt* {.bitsize: 1.}: int
- newsCreateCat* {.bitsize: 1.}: int
- newsDeleteCat* {.bitsize: 1.}: int
- newsCreateFldr* {.bitsize: 1.}: int
- newsDeleteFldr* {.bitsize: 1.}: int
- uploadFolder* {.bitsize: 1.}: int
- downloadFolder* {.bitsize: 1.}: int
- else:
- renameFolder* {.bitsize: 1.}: int
- deleteFolder* {.bitsize: 1.}: int
- createFolder* {.bitsize: 1.}: int
- moveFile* {.bitsize: 1.}: int
- renameFile* {.bitsize: 1.}: int
- downloadFile* {.bitsize: 1.}: int
- uploadFile* {.bitsize: 1.}: int
- deleteFile* {.bitsize: 1.}: int
- deleteUser* {.bitsize: 1.}: int
- createUser* {.bitsize: 1.}: int
- showInList* {.bitsize: 1.}: int
- closeChat* {.bitsize: 1.}: int
- openChat* {.bitsize: 1.}: int
- sendChat* {.bitsize: 1.}: int
- readChat* {.bitsize: 1.}: int
- moveFolder* {.bitsize: 1.}: int
- cannotBeDiscon* {.bitsize: 1.}: int
- disconUser* {.bitsize: 1.}: int
- newsPostArt* {.bitsize: 1.}: int
- newsReadArt* {.bitsize: 1.}: int
- sendPrivMsg* {.bitsize: 1.}: int
- changeOwnPass* {.bitsize: 1.}: int
- modifyUser* {.bitsize: 1.}: int
- openUser* {.bitsize: 1.}: int
- makeAlias* {.bitsize: 1.}: int
- viewDropBoxes* {.bitsize: 1.}: int
- setFolderComment* {.bitsize: 1.}: int
- setFileComment* {.bitsize: 1.}: int
- noAgreement* {.bitsize: 1.}: int
- anyName* {.bitsize: 1.}: int
- uploadAnywhere* {.bitsize: 1.}: int
- getClientInfo* {.bitsize: 1.}: int
- downloadFolder* {.bitsize: 1.}: int
- uploadFolder* {.bitsize: 1.}: int
- newsDeleteFldr* {.bitsize: 1.}: int
- newsCreateFldr* {.bitsize: 1.}: int
- newsDeleteCat* {.bitsize: 1.}: int
- newsCreateCat* {.bitsize: 1.}: int
- newsDeleteArt* {.bitsize: 1.}: int
- broadcast* {.bitsize: 1.}: int
- reserved {.bitsize: 24.}: int
- UserData* = ref object
- access: UserAccess
- login: string
- password: string
- alias: string
- User* = ref object
- ud: UserData
- socket*: AsyncSocket
- name: string
- id: uint16
- icon: int16
- proc newUser(id: uint16, socket: AsyncSocket): User =
- result.new()
- result.id = id
- result.socket = socket
- proc write(s: Stream, ud: UserData) =
- ## Writes a UserData structure in the Hotline 1.9 legacy format
- s.write(int32(4096)) # magic?
- s.write(ud.access)
- for i in countup(0, 63): s.write(int64(0))
- s.write(int16(ud.alias.len()))
- s.write(ud.alias)
- if ud.alias.len() < 134:
- for i in countup(1, 134-ud.alias.len()):
- s.write('\0')
- s.write(int16(ud.login.len()))
- s.write(ud.login)
- if ud.login.len() < 34:
- for i in countup(1, 34-ud.login.len()):
- s.write('\0')
- s.write(int16(ud.password.len()))
- s.write(ud.password)
- if ud.password.len() < 32:
- for i in countup(1, 32-ud.password.len()):
- s.write('\0')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement