Rev 4920 | Rev 5011 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3701 | hidnplayr | 1 | cmd_help: |
2 | |||
3 | push str_help |
||
4 | call [con_write_asciiz] |
||
5 | |||
3790 | hidnplayr | 6 | jmp wait_for_usercommand |
7 | |||
4920 | hidnplayr | 8 | |
3800 | hidnplayr | 9 | cmd_bye: |
10 | |||
4920 | hidnplayr | 11 | ; Send BYE message to the server |
4922 | ashmew2 | 12 | mov dword[buf_cmd], "BYE" + 13 shl 24 |
13 | mov byte[buf_cmd+4], 10 |
||
14 | mcall send, [socketnum], buf_cmd, 5, 0 |
||
4920 | hidnplayr | 15 | |
16 | ; Close the control connection |
||
3800 | hidnplayr | 17 | mcall close, [socketnum] |
18 | jmp main |
||
19 | |||
4920 | hidnplayr | 20 | |
3794 | hidnplayr | 21 | cmd_pwd: |
22 | |||
4922 | ashmew2 | 23 | mov dword[buf_cmd], "PWD" + 13 shl 24 |
24 | mov byte[buf_cmd+4], 10 |
||
25 | mcall send, [socketnum], buf_cmd, 5, 0 |
||
3794 | hidnplayr | 26 | |
27 | jmp wait_for_servercommand |
||
28 | |||
4920 | hidnplayr | 29 | |
3790 | hidnplayr | 30 | cmd_cwd: |
31 | |||
4922 | ashmew2 | 32 | mov dword[buf_cmd], "CWD " |
3790 | hidnplayr | 33 | |
34 | mov ecx, 256 |
||
35 | xor al, al |
||
4922 | ashmew2 | 36 | mov edi, buf_cmd |
3790 | hidnplayr | 37 | repne scasb |
4922 | ashmew2 | 38 | lea esi, [edi - buf_cmd] |
3814 | hidnplayr | 39 | mov word [edi - 2], 0x0a0d |
3790 | hidnplayr | 40 | |
4922 | ashmew2 | 41 | mcall send, [socketnum], buf_cmd, , 0 |
3790 | hidnplayr | 42 | |
3793 | hidnplayr | 43 | jmp wait_for_servercommand |
44 | |||
4920 | hidnplayr | 45 | |
3800 | hidnplayr | 46 | cmd_dele: |
3793 | hidnplayr | 47 | |
4922 | ashmew2 | 48 | mov dword[buf_cmd], "DELE" |
49 | mov byte[buf_cmd], " " |
||
3800 | hidnplayr | 50 | |
51 | mov ecx, 256 |
||
52 | xor al, al |
||
4922 | ashmew2 | 53 | mov edi, buf_cmd |
3800 | hidnplayr | 54 | repne scasb |
4922 | ashmew2 | 55 | lea esi, [edi - buf_cmd] |
3814 | hidnplayr | 56 | mov word [edi - 2], 0x0a0d |
3800 | hidnplayr | 57 | |
4922 | ashmew2 | 58 | mcall send, [socketnum], buf_cmd, , 0 |
3800 | hidnplayr | 59 | |
60 | jmp wait_for_servercommand |
||
61 | |||
4920 | hidnplayr | 62 | |
3800 | hidnplayr | 63 | cmd_list: |
64 | call open_dataconnection |
||
65 | |||
66 | mov [operation], OPERATION_LIST |
||
67 | |||
4922 | ashmew2 | 68 | mov dword[buf_cmd], "LIST" |
69 | mov word[buf_cmd+4], 0x0a0d |
||
70 | mcall send, [socketnum], buf_cmd, 6, 0 |
||
3800 | hidnplayr | 71 | |
72 | jmp wait_for_servercommand |
||
73 | |||
74 | |||
3793 | hidnplayr | 75 | cmd_retr: |
76 | call open_dataconnection |
||
4920 | hidnplayr | 77 | |
78 | ; Create/open the file |
||
3793 | hidnplayr | 79 | |
4922 | ashmew2 | 80 | ; Create/open the file |
81 | |||
82 | mov esi, buf_cmd+5 |
||
4920 | hidnplayr | 83 | mov ecx, 256-5 |
84 | call set_filename |
||
3800 | hidnplayr | 85 | |
86 | mov [filestruct.subfn], 2 ; create/rewrite file |
||
87 | mov [filestruct.offset], 0 |
||
88 | mov [filestruct.offset+4], 0 |
||
89 | mov [filestruct.size], 0 |
||
90 | mov [filestruct.ptr], 0 |
||
91 | |||
92 | mcall 70, filestruct |
||
93 | cmp eax, -1 |
||
94 | ; je fileerror |
||
95 | |||
4920 | hidnplayr | 96 | ; Prepare to write to the file |
97 | |||
3800 | hidnplayr | 98 | mov [filestruct.subfn], 3 ; write to file |
4920 | hidnplayr | 99 | mov [operation], OPERATION_RETR |
3800 | hidnplayr | 100 | |
4920 | hidnplayr | 101 | ; Request the file from server |
4922 | ashmew2 | 102 | |
103 | mov dword[buf_cmd], "RETR" |
||
104 | mov byte[buf_cmd+4], " " |
||
4920 | hidnplayr | 105 | |
3793 | hidnplayr | 106 | mov ecx, 256 |
107 | xor al, al |
||
4922 | ashmew2 | 108 | mov edi, buf_cmd |
3793 | hidnplayr | 109 | repne scasb |
4922 | ashmew2 | 110 | lea esi, [edi - buf_cmd] |
4920 | hidnplayr | 111 | mov dword[edi - 2], 0x0a0d |
4922 | ashmew2 | 112 | mcall send, [socketnum], buf_cmd, , 0 |
3793 | hidnplayr | 113 | |
4922 | ashmew2 | 114 | invoke con_write_asciiz, buf_cmd ; print command |
3793 | hidnplayr | 115 | jmp wait_for_servercommand |
116 | |||
4922 | ashmew2 | 117 | cmd_rdir: |
3793 | hidnplayr | 118 | |
4922 | ashmew2 | 119 | mov [operation], OPERATION_RDIR |
120 | |||
121 | ; Request filename list from the server |
||
122 | |||
123 | call open_dataconnection |
||
124 | |||
125 | mov [size_fname], 0 |
||
126 | mov dword[buf_cmd], "NLST" |
||
127 | mov word[buf_cmd+4], 0x0a0d |
||
128 | mcall send, [socketnum], buf_cmd, 6, 0 |
||
129 | |||
130 | jmp wait_for_servercommand |
||
131 | |||
3793 | hidnplayr | 132 | cmd_stor: |
133 | |||
134 | call open_dataconnection |
||
135 | |||
3800 | hidnplayr | 136 | mov [operation], OPERATION_STOR |
137 | |||
138 | mov [filestruct.subfn], 0 ; read file |
||
139 | mov [filestruct.offset], 0 |
||
140 | mov [filestruct.offset+4], 0 |
||
141 | mov [filestruct.size], BUFFERSIZE |
||
4922 | ashmew2 | 142 | mov [filestruct.ptr], buf_buffer2 |
3800 | hidnplayr | 143 | |
4922 | ashmew2 | 144 | mov esi, buf_cmd+5 |
3800 | hidnplayr | 145 | mov ecx, 256-5 |
146 | call set_filename |
||
147 | |||
4922 | ashmew2 | 148 | mov dword[buf_cmd], "STOR" |
149 | mov byte[buf_cmd+4], " " |
||
3793 | hidnplayr | 150 | |
151 | mov ecx, 256 |
||
152 | xor al, al |
||
4922 | ashmew2 | 153 | mov edi, buf_cmd |
3793 | hidnplayr | 154 | repne scasb |
4922 | ashmew2 | 155 | lea esi, [edi - buf_cmd] |
3814 | hidnplayr | 156 | mov word [edi - 2], 0x0a0d |
4922 | ashmew2 | 157 | mcall send, [socketnum], buf_cmd, , 0 |
3793 | hidnplayr | 158 | |
3800 | hidnplayr | 159 | jmp wait_for_servercommand |
160 | |||
161 | |||
3802 | hidnplayr | 162 | cmd_lcwd: |
3800 | hidnplayr | 163 | |
4922 | ashmew2 | 164 | mov esi, buf_cmd+5 |
3802 | hidnplayr | 165 | mov ecx, 256-5 |
166 | .loop: |
||
167 | lodsb |
||
168 | cmp al, 10 |
||
169 | je .done |
||
170 | test al, al |
||
171 | je .done |
||
172 | loop .loop |
||
173 | .done: |
||
174 | mov byte[esi-1], 0 |
||
4922 | ashmew2 | 175 | mcall 30, 1, buf_cmd+5 ; set working directory |
176 | mcall 30, 2, buf_cmd, 256 ; and read it again |
||
3802 | hidnplayr | 177 | |
178 | invoke con_write_asciiz, str_lcwd |
||
4922 | ashmew2 | 179 | invoke con_write_asciiz, buf_cmd |
3813 | hidnplayr | 180 | invoke con_write_asciiz, str_newline |
3802 | hidnplayr | 181 | |
182 | jmp wait_for_usercommand |
||
183 | |||
4920 | hidnplayr | 184 | |
3804 | hidnplayr | 185 | cmd_cdup: |
3802 | hidnplayr | 186 | |
4922 | ashmew2 | 187 | mov dword[buf_cmd], "CDUP" |
188 | mov word[buf_cmd+4], 0x0d0a |
||
189 | mcall send, [socketnum], buf_cmd, 6, 0 |
||
3802 | hidnplayr | 190 | |
3804 | hidnplayr | 191 | jmp wait_for_servercommand |
192 | |||
4920 | hidnplayr | 193 | |
3804 | hidnplayr | 194 | cmd_rmd: |
195 | |||
4922 | ashmew2 | 196 | mov dword[buf_cmd], "RMD " |
3804 | hidnplayr | 197 | |
198 | mov ecx, 256 |
||
199 | xor al, al |
||
4922 | ashmew2 | 200 | mov edi, buf_cmd |
3804 | hidnplayr | 201 | repne scasb |
4922 | ashmew2 | 202 | lea esi, [edi - buf_cmd] |
3814 | hidnplayr | 203 | mov word [edi - 2], 0x0a0d |
3804 | hidnplayr | 204 | |
4922 | ashmew2 | 205 | mcall send, [socketnum], buf_cmd, , 0 |
3804 | hidnplayr | 206 | |
207 | jmp wait_for_servercommand |
||
208 | |||
4920 | hidnplayr | 209 | |
3804 | hidnplayr | 210 | cmd_mkd: |
211 | |||
4922 | ashmew2 | 212 | mov dword[buf_cmd], "MKD " |
3804 | hidnplayr | 213 | |
214 | mov ecx, 256 |
||
215 | xor al, al |
||
4922 | ashmew2 | 216 | mov edi, buf_cmd |
3804 | hidnplayr | 217 | repne scasb |
4922 | ashmew2 | 218 | lea esi, [edi - buf_cmd] |
3814 | hidnplayr | 219 | mov word [edi - 2], 0x0a0d |
3804 | hidnplayr | 220 | |
4922 | ashmew2 | 221 | mcall send, [socketnum], buf_cmd, , 0 |
3804 | hidnplayr | 222 | |
223 | jmp wait_for_servercommand |
||
224 | |||
225 | |||
3800 | hidnplayr | 226 | ; esi = source ptr |
227 | ; ecx = max length of source buffer |
||
228 | set_filename: |
||
229 | |||
4920 | hidnplayr | 230 | mov edi, filestruct.name |
3800 | hidnplayr | 231 | .loop: |
232 | lodsb |
||
233 | test al, al |
||
234 | jz .done |
||
235 | cmp al, 10 |
||
236 | je .done |
||
237 | stosb |
||
238 | loop .loop |
||
239 | .done: |
||
240 | xor al, al ; append a 0 byte |
||
241 | stosb |
||
242 | |||
4920 | hidnplayr | 243 | ret |