Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2584 → Rev 2585

/kernel/branches/net/applications/ftpd/commands.inc
81,10 → 81,10
dd cmdPASS
db 'PASV'
dd cmdPASV
db 'PORT'
dd cmdPORT
db 'PWD', 0
dd cmdPWD
db 'PORT'
dd cmdPORT
db 'QUIT'
dd cmdQUIT
db 'RETR'
97,8 → 97,6
dd cmdTYPE
db 'USER'
dd cmdUSER
db 'XPWD'
dd cmdPWD
db 0 ; end marker
 
 
112,24 → 110,34
align 4
cmdCDUP:
 
cmp byte [edx + thread_data.work_dir+1], 0
cmp byte [edx + thread_data.work_dir+1], 0 ; are we in "/" ?
je .done
 
mov ecx, 1024
xor al, al
lea edi, [edx + thread_data.work_dir+1024]
lea edi, [edx + thread_data.work_dir]
repne scasb
std
dec edi
dec edi
dec edi
mov al,'/'
scasb
repne scasb
cld
mov byte[edi], 0
mov byte[edi+1], 0
 
.done:
; Print the new working dir on the console
lea eax, [edx + thread_data.work_dir]
push eax
call [con_write_asciiz]
push str_newline
call [con_write_asciiz]
 
mcall send, [edx + thread_data.socketnum], str250, str250.length, 0 ; command successful
ret
 
 
align 4
cmdCWD: ; Change Working Directory
 
174,6 → 182,13
@@:
mov byte [edi], 0
 
; Print the new working dir on the console
lea eax, [edx + thread_data.work_dir]
push eax
call [con_write_asciiz]
push str_newline
call [con_write_asciiz]
 
mcall send, [edx + thread_data.socketnum], str250, str250.length, 0
 
ret
198,6 → 213,7
 
ret
 
 
align 4
cmdLIST:
 
344,11 → 360,7
; close the data socket..
mov edx, [esp+4] ; thread_data pointer
mcall close, [edx + thread_data.datasocketnum]
 
cmp [edx + thread_data.mode], MODE_PASSIVE_OK
jne @f
mov [edx + thread_data.mode], MODE_NOTREADY
@@:
 
; And send "transfer ok" on the base connection
mcall send, [edx + thread_data.socketnum], str226, str226.length, 0
448,6 → 460,7
 
ret
 
 
align 4
cmdPWD: ; Print Working Directory
 
471,14 → 484,20
sub esi, edx
mov ecx, [edx + thread_data.socketnum]
lea edx, [edx + thread_data.buffer]
mcall send, , , , 0
xor edi, edi
mcall send
 
; push work_dir
; push str_pwd
; call [con_printf]
mov edx, [esp+4]
; Print the new working dir on the console
lea eax, [edx + thread_data.work_dir]
push eax
call [con_write_asciiz]
push str_newline
call [con_write_asciiz]
 
ret
 
 
align 4
cmdPORT:
 
620,12 → 639,8
je .read_more
 
mcall close, [edx + thread_data.datasocketnum]
mov [edx + thread_data.mode], MODE_NOTREADY
 
cmp [edx + thread_data.mode], MODE_PASSIVE_OK
jne @f
mov [edx + thread_data.mode], MODE_PASSIVE_WAIT
@@:
 
mcall send, [edx + thread_data.socketnum], str226, str226.length, 0 ; transfer ok
 
ret
684,7 → 699,6
mov [edx + thread_data.type], TYPE_EBDIC
 
.subtype:
 
cmp ecx, 8
jb .non_print
 
733,21 → 747,21
 
ret
 
 
align 4
cmdUSER:
 
; TODO: check user and set home directory (and permissions)
 
mcall send, [edx + thread_data.socketnum], str331, str331.length, 0
mov edx, [esp+4] ; thread_data pointer
mov [edx + thread_data.state], STATE_LOGIN
mov word [edx + thread_data.home_dir], "/" ; "/", 0
mov word [edx + thread_data.work_dir], "/" ; "/", 0
 
mov byte [edx + thread_data.work_dir], "/"
mov byte [edx + thread_data.work_dir+1], 0
 
push str_logged_in
call [con_write_asciiz]
 
mcall send, [edx + thread_data.socketnum], str331, str331.length, 0 ; Now send me the password!
 
ret
 
 
/kernel/branches/net/applications/ftpd/ftpd.asm
101,9 → 101,9
push str2
call [con_write_asciiz]
 
;; mcall setsockopt, [socketnum], SOL_SOCKET, SO_REUSEADDR, &yes,
;; cmp eax, -1
;; je opt_err
; mcall setsockopt, [socketnum], SOL_SOCKET, SO_REUSEADDR, &yes,
; cmp eax, -1
; je opt_err
 
mcall bind, [socketnum], sockaddr1, sockaddr1.length
cmp eax, -1
132,6 → 132,7
; NOTE: upon initialisation of the thread, stack will not be available!
jmp mainloop
 
diff16 "threadstart", 0, $
threadstart:
mcall 68, 12, sizeof.thread_data ; allocate the thread data struct
cmp eax, -1
142,8 → 143,12
 
mcall 40, 1 shl 7 ; we only want network events for this thread
 
pushd 0x03
call [con_set_flags]
push str8
call [con_write_asciiz] ; print on the console that we have created the new thread successfully
pushd 0x07
call [con_set_flags]
 
mcall accept, [socketnum], sockaddr1, sockaddr1.length ; time to accept the awaiting connection..
cmp eax, -1
187,8 → 192,10
mov edx, [esp+4] ; pointer to thread_data
mov byte [edx + thread_data.buffer + eax], 0 ; append received data with a 0 byte
 
pushd 0x0a ; print received data to console (in green color)
pushd 0x02 ; print received data to console (in green color)
call [con_set_flags]
push str_newline
call [con_write_asciiz]
lea eax, [edx + thread_data.buffer]
push eax
call [con_write_asciiz]
244,22 → 251,22
title db 'KolibriOS FTP daemon 0.1', 0
str1 db 'Starting FTP daemon on port %u', 0
str2 db '.', 0
str2b db ' OK!',10,10,0
str3 db 'Listen error',10,10,0
str4 db 'Bind error',10,10,0
str2b db ' OK!',10,0
str3 db 'Listen error',10,0
str4 db 'Bind error',10,0
;str5 db 'Setsockopt error.',10,10,0
str6 db 'Could not open socket',10,10,0
str6 db 'Could not open socket',10,0
str7 db 'Got data!',10,10,0
str8 db 10,'New thread created!',10,10,0
str_bye db 10,'Closing thread!',10,10,0
str8 db 10,'New thread created!',10,0
str_bye db 10,'Closing thread!',10,0
 
str_logged_in db 'Login ok',10,10,0
str_pass_ok db 'Password ok - Logged in',10,10,0
str_logged_in db 'Login ok',10,0
str_pass_ok db 'Password ok - Logged in',10,0
str_pwd db 'Current directory is "%s"\n',0
str_err2 db 'ERROR: cannot open directory',10,10,0
str_datasock db 'Passive data socket connected!',10,10,0
str_notfound db 'ERROR: file not found',10,10,0
str_sockerr db 'ERROR: socket error',10,10,0
str_err2 db 'ERROR: cannot open directory',10,0
str_datasock db 'Passive data socket connected!',10,0
str_notfound db 'ERROR: file not found',10,0
str_sockerr db 'ERROR: socket error',10,0
 
str_newline db 10, 0
str_mask db '*', 0