forked from KolibriOS/kolibrios
Rewrote logic of downloader, added it to autobuild.
git-svn-id: svn://kolibrios.org@3566 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8e107a1443
commit
d60e9fc26f
@ -199,6 +199,7 @@ FASM_PROGRAMS:=\
|
|||||||
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
||||||
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
||||||
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
||||||
|
network/downloader:NETWORK/DOWNLOADER:$(PROGS)/network/downloader/downloader.asm \
|
||||||
# end of list
|
# end of list
|
||||||
# The list of all FASM programs with one main FASM file for CD image.
|
# The list of all FASM programs with one main FASM file for CD image.
|
||||||
# Format of an item is exactly the same as in the previous list.
|
# Format of an item is exactly the same as in the previous list.
|
||||||
|
@ -199,6 +199,7 @@ FASM_PROGRAMS:=\
|
|||||||
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
||||||
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
||||||
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
||||||
|
network/downloader:NETWORK/DOWNLOADER:$(PROGS)/network/downloader/downloader.asm \
|
||||||
# end of list
|
# end of list
|
||||||
# The list of all FASM programs with one main FASM file for CD image.
|
# The list of all FASM programs with one main FASM file for CD image.
|
||||||
# Format of an item is exactly the same as in the previous list.
|
# Format of an item is exactly the same as in the previous list.
|
||||||
|
@ -199,6 +199,7 @@ FASM_PROGRAMS:=\
|
|||||||
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
||||||
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
||||||
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
||||||
|
network/downloader:NETWORK/DOWNLOADER:$(PROGS)/network/downloader/downloader.asm \
|
||||||
# end of list
|
# end of list
|
||||||
# The list of all FASM programs with one main FASM file for CD image.
|
# The list of all FASM programs with one main FASM file for CD image.
|
||||||
# Format of an item is exactly the same as in the previous list.
|
# Format of an item is exactly the same as in the previous list.
|
||||||
|
@ -199,6 +199,7 @@ FASM_PROGRAMS:=\
|
|||||||
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
|
||||||
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
|
||||||
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
|
||||||
|
network/downloader:NETWORK/DOWNLOADER:$(PROGS)/network/downloader/downloader.asm \
|
||||||
# end of list
|
# end of list
|
||||||
# The list of all FASM programs with one main FASM file for CD image.
|
# The list of all FASM programs with one main FASM file for CD image.
|
||||||
# Format of an item is exactly the same as in the previous list.
|
# Format of an item is exactly the same as in the previous list.
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
URLMAXLEN = 1024
|
URLMAXLEN = 1024
|
||||||
primary_buffer_size = 4096
|
BUFFERSIZE = 4096
|
||||||
|
|
||||||
__DEBUG__ = 1
|
__DEBUG__ = 1
|
||||||
__DEBUG_LEVEL__ = 2
|
__DEBUG_LEVEL__ = 2
|
||||||
@ -30,8 +30,8 @@ use32
|
|||||||
dd 0x01 ; header version
|
dd 0x01 ; header version
|
||||||
dd START ; entry point
|
dd START ; entry point
|
||||||
dd IM_END ; image size
|
dd IM_END ; image size
|
||||||
dd I_END ; required memory
|
dd I_END+0x100 ; required memory
|
||||||
dd I_END ; esp
|
dd I_END+0x100 ; esp
|
||||||
dd params ; I_PARAM
|
dd params ; I_PARAM
|
||||||
dd 0x0 ; I_Path
|
dd 0x0 ; I_Path
|
||||||
|
|
||||||
@ -54,7 +54,6 @@ START:
|
|||||||
jnz exit
|
jnz exit
|
||||||
|
|
||||||
; prepare webAddr area
|
; prepare webAddr area
|
||||||
|
|
||||||
mov al, ' '
|
mov al, ' '
|
||||||
mov edi, webAddr
|
mov edi, webAddr
|
||||||
mov ecx, URLMAXLEN
|
mov ecx, URLMAXLEN
|
||||||
@ -103,10 +102,6 @@ START:
|
|||||||
inc esi
|
inc esi
|
||||||
.done:
|
.done:
|
||||||
mov [shared_name], esi
|
mov [shared_name], esi
|
||||||
|
|
||||||
mov ah, 22 ; strange way to tell that socket should be opened...
|
|
||||||
call socket_commands
|
|
||||||
|
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
prepare_event:
|
prepare_event:
|
||||||
@ -118,7 +113,7 @@ red: ; redraw
|
|||||||
call draw_window
|
call draw_window
|
||||||
|
|
||||||
still:
|
still:
|
||||||
mcall 23, 1 ; wait here for event
|
mcall 10 ; wait here for event
|
||||||
cmp eax, 1 ; redraw request ?
|
cmp eax, 1 ; redraw request ?
|
||||||
je red
|
je red
|
||||||
|
|
||||||
@ -131,93 +126,129 @@ still:
|
|||||||
cmp eax, 6 ; mouse in buffer ?
|
cmp eax, 6 ; mouse in buffer ?
|
||||||
je mouse
|
je mouse
|
||||||
|
|
||||||
; Get the web page data from the remote server
|
|
||||||
cmp eax, 8
|
|
||||||
jne still
|
|
||||||
|
|
||||||
call read_incoming_data
|
|
||||||
|
|
||||||
cmp [status], 4
|
|
||||||
je .no_send
|
|
||||||
|
|
||||||
mov [onoff], 1
|
|
||||||
call send_request
|
|
||||||
|
|
||||||
.no_send:
|
|
||||||
call print_status
|
|
||||||
|
|
||||||
cmp [prev_status], 4
|
|
||||||
jne no_close
|
|
||||||
cmp [status], 4 ; connection closed by server
|
|
||||||
jbe no_close ; respond to connection close command
|
|
||||||
; draw page
|
|
||||||
call read_incoming_data
|
|
||||||
mcall close, [socketnum]
|
|
||||||
mov [onoff], 0
|
|
||||||
|
|
||||||
no_close:
|
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
|
|
||||||
key:
|
key:
|
||||||
mcall 2 ; read key
|
mcall 2 ; read key
|
||||||
|
|
||||||
stdcall [edit_box_key], dword edit1
|
stdcall [edit_box_key], dword edit1
|
||||||
|
|
||||||
shr eax, 8
|
cmp ax, 13 shl 8
|
||||||
cmp eax, 13
|
je download
|
||||||
je retkey
|
|
||||||
|
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
|
|
||||||
button:
|
button:
|
||||||
|
|
||||||
mcall 17 ; get id
|
mcall 17 ; get id
|
||||||
cmp ah, 26
|
cmp ah, 26
|
||||||
je save
|
jne @f
|
||||||
|
call save_to_file
|
||||||
|
jmp still
|
||||||
|
@@:
|
||||||
cmp ah, 1 ; button id=1 ?
|
cmp ah, 1 ; button id=1 ?
|
||||||
jne noclose
|
je exit
|
||||||
; DEBUGF 1, "Closing socket before exit...\n"
|
|
||||||
|
|
||||||
close_end_exit:
|
jmp download
|
||||||
|
|
||||||
exit:
|
|
||||||
or eax, -1 ; close this program
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mouse:
|
mouse:
|
||||||
stdcall [edit_box_mouse], edit1
|
stdcall [edit_box_mouse], edit1
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
|
exit:
|
||||||
|
or eax, -1 ; close this program
|
||||||
|
mcall
|
||||||
|
|
||||||
|
download:
|
||||||
|
|
||||||
|
DEBUGF 1, "Starting download\n"
|
||||||
|
|
||||||
|
call parse_url
|
||||||
|
call open_socket
|
||||||
|
call send_request
|
||||||
|
|
||||||
|
mcall 68, 12, BUFFERSIZE
|
||||||
|
mov [buf_ptr], eax
|
||||||
|
mov [buf_size], 0
|
||||||
|
|
||||||
|
call read_incoming_data
|
||||||
|
|
||||||
|
mcall close, [socketnum]
|
||||||
|
|
||||||
|
call parse_result
|
||||||
|
call save
|
||||||
|
|
||||||
|
mcall 68, 13, [final_buffer]
|
||||||
|
|
||||||
|
jmp still
|
||||||
|
|
||||||
|
|
||||||
save:
|
save:
|
||||||
DEBUGF 2, "File saved\n"
|
|
||||||
|
mov ecx, [shared_name]
|
||||||
|
test ecx, ecx
|
||||||
|
jz @f
|
||||||
|
cmp [ecx], byte 0
|
||||||
|
jnz save_in_shared
|
||||||
|
@@:
|
||||||
|
|
||||||
|
call save_to_file
|
||||||
|
|
||||||
|
; if called from command line, then exit
|
||||||
|
cmp byte[params], 0
|
||||||
|
jne exit
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
save_in_shared:
|
||||||
|
|
||||||
|
mov esi, 1 ; SHM_OPEN+SHM_WRITE
|
||||||
|
mcall 68, 22
|
||||||
|
test eax, eax
|
||||||
|
jz exit
|
||||||
|
|
||||||
|
sub edx, 4
|
||||||
|
jbe exit
|
||||||
|
|
||||||
|
mov ecx, [final_size]
|
||||||
|
cmp ecx, edx
|
||||||
|
jb @f
|
||||||
|
|
||||||
|
mov ecx, edx
|
||||||
|
@@:
|
||||||
|
mov [eax], ecx
|
||||||
|
lea edi, [eax+4]
|
||||||
|
mov esi, [final_buffer]
|
||||||
|
mov edx, ecx
|
||||||
|
shr ecx, 2
|
||||||
|
rep movsd
|
||||||
|
mov ecx, edx
|
||||||
|
and ecx, 3
|
||||||
|
rep movsb
|
||||||
|
|
||||||
|
jmp exit
|
||||||
|
|
||||||
|
|
||||||
|
;****************************************************************************
|
||||||
|
; Function
|
||||||
|
; save_to_file
|
||||||
|
;
|
||||||
|
; Description
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;****************************************************************************
|
||||||
|
|
||||||
|
save_to_file:
|
||||||
|
|
||||||
|
DEBUGF 2, "Saving to file\n"
|
||||||
mcall 70, fileinfo
|
mcall 70, fileinfo
|
||||||
|
|
||||||
mov ecx, [sc.work_text]
|
mov ecx, [sc.work_text]
|
||||||
or ecx, 0x80000000
|
or ecx, 0x80000000
|
||||||
mcall 4, <10, 93>, , download_complete
|
mcall 4, <10, 93>, , download_complete
|
||||||
|
|
||||||
jmp still
|
ret
|
||||||
|
|
||||||
noclose:
|
|
||||||
cmp ah, 31
|
|
||||||
jne noup
|
|
||||||
sub [display_from], 20
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
noup:
|
|
||||||
cmp ah, 32
|
|
||||||
jne nourl
|
|
||||||
add [display_from], 20
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
|
|
||||||
retkey:
|
|
||||||
mov ah, 22 ; start load
|
|
||||||
|
|
||||||
nourl:
|
|
||||||
call socket_commands ; opens or closes the connection
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
|
|
||||||
;****************************************************************************
|
;****************************************************************************
|
||||||
@ -233,7 +264,6 @@ send_request:
|
|||||||
|
|
||||||
DEBUGF 1, "Sending request\n"
|
DEBUGF 1, "Sending request\n"
|
||||||
|
|
||||||
pusha
|
|
||||||
mov esi, string0
|
mov esi, string0
|
||||||
mov edi, request
|
mov edi, request
|
||||||
movsd
|
movsd
|
||||||
@ -307,44 +337,7 @@ send_request:
|
|||||||
mov esi, edi
|
mov esi, edi
|
||||||
sub esi, request ; length
|
sub esi, request ; length
|
||||||
xor edi, edi ; flags
|
xor edi, edi ; flags
|
||||||
;;;;now write \r\nConnection: Close \r\n\r\n
|
|
||||||
mcall send, [socketnum], request ;' HTTP/1.1 .. '
|
mcall send, [socketnum], request ;' HTTP/1.1 .. '
|
||||||
popa
|
|
||||||
ret
|
|
||||||
|
|
||||||
;****************************************************************************
|
|
||||||
; Function
|
|
||||||
; print_status
|
|
||||||
;
|
|
||||||
; Description
|
|
||||||
; displays the socket/data received status information
|
|
||||||
;
|
|
||||||
;****************************************************************************
|
|
||||||
print_status:
|
|
||||||
pusha
|
|
||||||
mcall 26, 9
|
|
||||||
cmp eax, [nextupdate]
|
|
||||||
jb status_return
|
|
||||||
|
|
||||||
add eax, 25
|
|
||||||
mov [nextupdate], eax
|
|
||||||
|
|
||||||
mov ecx, [winys]
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, -18 shl 16 + 10
|
|
||||||
mcall 13, <5, 100>, , 0xffffff
|
|
||||||
|
|
||||||
mov edx, 12 shl 16 - 18
|
|
||||||
add edx, [winys]
|
|
||||||
xor esi, esi
|
|
||||||
mcall 47, <3, 0>, [status], ,
|
|
||||||
|
|
||||||
mov edx, 40 shl 16 - 18
|
|
||||||
add edx, [winys]
|
|
||||||
mcall , <6, 0>, [pos]
|
|
||||||
|
|
||||||
status_return:
|
|
||||||
popa
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;****************************************************************************
|
;****************************************************************************
|
||||||
@ -356,111 +349,54 @@ status_return:
|
|||||||
;
|
;
|
||||||
;****************************************************************************
|
;****************************************************************************
|
||||||
read_incoming_data:
|
read_incoming_data:
|
||||||
cmp [onoff], 1
|
|
||||||
je .rid
|
|
||||||
ret
|
|
||||||
|
|
||||||
.rid:
|
|
||||||
push esi
|
|
||||||
push edi
|
|
||||||
DEBUGF 1, "Reading incoming data\n"
|
DEBUGF 1, "Reading incoming data\n"
|
||||||
|
|
||||||
|
mov eax, [buf_ptr]
|
||||||
|
mov [pos], eax
|
||||||
|
|
||||||
.read:
|
.read:
|
||||||
; TODO: implement timeout !
|
mcall 23, 100 ; 1 second timeout
|
||||||
mcall recv, [socketnum], primary_buf, primary_buffer_size, 0
|
.read_dontwait:
|
||||||
|
mcall recv, [socketnum], [pos], BUFFERSIZE, 0
|
||||||
inc eax ; -1 = error (socket closed?)
|
inc eax ; -1 = error (socket closed?)
|
||||||
jz .no_more_data
|
jz .no_more_data
|
||||||
dec eax ; 0 bytes...
|
dec eax ; 0 bytes...
|
||||||
jz .read
|
jz .read ; timeout
|
||||||
|
|
||||||
DEBUGF 1, "Got chunk of %u bytes\n", eax
|
DEBUGF 1, "Got chunk of %u bytes\n", eax
|
||||||
|
|
||||||
mov edi, [pos]
|
add [buf_size], eax
|
||||||
add [pos], eax
|
add [pos], eax
|
||||||
push eax
|
push eax
|
||||||
mcall 68, 20, [pos], [buf_ptr]
|
mov ecx, [buf_size]
|
||||||
mov [buf_ptr], eax
|
add ecx, BUFFERSIZE
|
||||||
add edi, eax
|
mcall 68, 20, , [buf_ptr] ; reallocate memory block (make bigger)
|
||||||
mov esi, primary_buf
|
; TODO: parse header and resize buffer only once
|
||||||
pop ecx ; number of recently read bytes
|
pop eax
|
||||||
lea edx, [ecx - 3]
|
|
||||||
rep movsb
|
cmp eax, BUFFERSIZE
|
||||||
|
je .read_dontwait
|
||||||
|
jmp .read
|
||||||
|
|
||||||
.no_more_data:
|
.no_more_data:
|
||||||
|
mov eax, [buf_ptr]
|
||||||
|
sub [pos], eax
|
||||||
|
|
||||||
DEBUGF 1, "No more data\n"
|
DEBUGF 1, "No more data\n"
|
||||||
|
|
||||||
; mov [status], 4 ; connection closed by server
|
|
||||||
|
|
||||||
call parse_result
|
|
||||||
|
|
||||||
DEBUGF 1, "Parsing complete\n"
|
|
||||||
|
|
||||||
mov ecx, [shared_name]
|
|
||||||
test ecx, ecx
|
|
||||||
jz @f
|
|
||||||
cmp [ecx], byte 0
|
|
||||||
jnz save_in_shared
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mcall 70, fileinfo
|
|
||||||
|
|
||||||
DEBUGF 2, "File saved\n"
|
|
||||||
|
|
||||||
mov ecx, [sc.work_text]
|
|
||||||
or ecx, 0x80000000
|
|
||||||
mcall 4, <10, 93>, , download_complete
|
|
||||||
|
|
||||||
pop edi
|
|
||||||
pop esi
|
|
||||||
|
|
||||||
; if called from command line, then exit
|
|
||||||
cmp byte[params], 0
|
|
||||||
jne exit
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
save_in_shared:
|
|
||||||
|
|
||||||
mov esi, 1 ; SHM_OPEN+SHM_WRITE
|
|
||||||
mcall 68, 22
|
|
||||||
test eax, eax
|
|
||||||
jz save_in_shared_done
|
|
||||||
|
|
||||||
sub edx, 4
|
|
||||||
jbe save_in_shared_done
|
|
||||||
|
|
||||||
mov ecx, [final_size]
|
|
||||||
cmp ecx, edx
|
|
||||||
jb @f
|
|
||||||
|
|
||||||
mov ecx, edx
|
|
||||||
@@:
|
|
||||||
mov [eax], ecx
|
|
||||||
lea edi, [eax+4]
|
|
||||||
mov esi, [final_buffer]
|
|
||||||
mov edx, ecx
|
|
||||||
shr ecx, 2
|
|
||||||
rep movsd
|
|
||||||
mov ecx, edx
|
|
||||||
and ecx, 3
|
|
||||||
rep movsb
|
|
||||||
|
|
||||||
save_in_shared_done:
|
|
||||||
pop edi
|
|
||||||
pop esi
|
|
||||||
jmp exit
|
|
||||||
|
|
||||||
; this function cuts header, and removes chunk sizes if doc is chunked
|
; this function cuts header, and removes chunk sizes if doc is chunked
|
||||||
; in: buf_ptr, pos; out: buf_ptr, pos.
|
; in: buf_ptr, pos; out: buf_ptr, pos.
|
||||||
|
|
||||||
parse_result:
|
parse_result:
|
||||||
; close socket
|
|
||||||
mcall close, [socketnum]
|
|
||||||
|
|
||||||
mov edi, [buf_ptr]
|
mov edi, [buf_ptr]
|
||||||
mov edx, [pos]
|
mov edx, [pos]
|
||||||
mov [buf_size], edx
|
; mov [buf_size], edx
|
||||||
; mcall 70, fileinfo_tmp
|
; mcall 70, fileinfo_tmp
|
||||||
DEBUGF 1, "Parsing result (%u bytes)\n", edx
|
DEBUGF 1, "Parsing result (%u bytes)\n", edx
|
||||||
|
|
||||||
@ -560,7 +496,8 @@ parse_result:
|
|||||||
sub ebx, [body_pos]
|
sub ebx, [body_pos]
|
||||||
cmp eax, ebx
|
cmp eax, ebx
|
||||||
jbe .size_ok
|
jbe .size_ok
|
||||||
DEBUGF 2, "Not all data was received!\n"
|
sub eax, ebx
|
||||||
|
DEBUGF 2, "%u bytes of data are missing!\n", eax
|
||||||
mov eax, ebx
|
mov eax, ebx
|
||||||
.size_ok:
|
.size_ok:
|
||||||
mov [final_size], eax
|
mov [final_size], eax
|
||||||
@ -622,11 +559,9 @@ parse_chunks:
|
|||||||
jmp .read_size
|
jmp .read_size
|
||||||
|
|
||||||
chunks_end:
|
chunks_end:
|
||||||
; free old buffer
|
|
||||||
DEBUGF 1, "chunks end\n"
|
DEBUGF 1, "chunks end\n"
|
||||||
|
mcall 68, 13, [buf_ptr] ; free old buffer
|
||||||
|
|
||||||
mcall 68, 13, [buf_ptr]
|
|
||||||
; done!
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; reads content-length from [edi+ecx], result in eax
|
; reads content-length from [edi+ecx], result in eax
|
||||||
@ -700,32 +635,16 @@ read_hex:
|
|||||||
|
|
||||||
;****************************************************************************
|
;****************************************************************************
|
||||||
; Function
|
; Function
|
||||||
; socket_commands
|
; open_socket
|
||||||
;
|
;
|
||||||
; Description
|
; Description
|
||||||
; opens or closes the socket
|
; opens the socket
|
||||||
;
|
;
|
||||||
;****************************************************************************
|
;****************************************************************************
|
||||||
socket_commands:
|
open_socket:
|
||||||
cmp ah, 22 ; open socket
|
|
||||||
jne tst3
|
|
||||||
|
|
||||||
DEBUGF 1, "opening socket\n"
|
DEBUGF 1, "opening socket\n"
|
||||||
|
|
||||||
; Clear all page memory
|
|
||||||
xor eax, eax
|
|
||||||
mov [prev_chunk_end], eax ; 0
|
|
||||||
cmp [buf_ptr], eax ; 0
|
|
||||||
jz no_free
|
|
||||||
|
|
||||||
mcall 68, 13, [buf_ptr] ; free buffer
|
|
||||||
|
|
||||||
no_free:
|
|
||||||
xor eax, eax
|
|
||||||
mov [buf_size], eax ; 0
|
|
||||||
; Parse the entered url
|
|
||||||
call parse_url
|
|
||||||
|
|
||||||
mov edx, 80
|
mov edx, 80
|
||||||
cmp byte [proxyAddr], 0
|
cmp byte [proxyAddr], 0
|
||||||
jz @f
|
jz @f
|
||||||
@ -737,25 +656,9 @@ no_free:
|
|||||||
mcall socket, AF_INET4, SOCK_STREAM, 0
|
mcall socket, AF_INET4, SOCK_STREAM, 0
|
||||||
mov [socketnum], eax
|
mov [socketnum], eax
|
||||||
mcall connect, [socketnum], sockaddr1, 18
|
mcall connect, [socketnum], sockaddr1, 18
|
||||||
mov [pagexs], 80
|
|
||||||
|
|
||||||
push eax
|
|
||||||
xor eax, eax ; 0
|
|
||||||
mov [pos], eax
|
|
||||||
mov [pagex], eax
|
|
||||||
mov [pagey], eax
|
|
||||||
mov [command_on_off], eax
|
|
||||||
mov [is_body], eax
|
|
||||||
pop eax
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
tst3:
|
|
||||||
cmp ah, 24 ; close socket
|
|
||||||
jne no_24
|
|
||||||
|
|
||||||
mcall close, [socketnum]
|
|
||||||
no_24:
|
|
||||||
ret
|
|
||||||
|
|
||||||
;****************************************************************************
|
;****************************************************************************
|
||||||
; Function
|
; Function
|
||||||
@ -1055,6 +958,8 @@ draw_window:
|
|||||||
|
|
||||||
mcall 12, 2 ; end window redraw
|
mcall 12, 2 ; end window redraw
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Data area
|
; Data area
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -1086,7 +991,6 @@ final_buffer dd 0
|
|||||||
db '/rd/1/.download', 0
|
db '/rd/1/.download', 0
|
||||||
|
|
||||||
body_pos dd 0
|
body_pos dd 0
|
||||||
|
|
||||||
buf_size dd 0
|
buf_size dd 0
|
||||||
buf_ptr dd 0
|
buf_ptr dd 0
|
||||||
|
|
||||||
@ -1108,21 +1012,6 @@ include_debug_strings
|
|||||||
type_pls db 'URL:', 0
|
type_pls db 'URL:', 0
|
||||||
button_text db 'DOWNLOAD STOP RESAVE', 0
|
button_text db 'DOWNLOAD STOP RESAVE', 0
|
||||||
download_complete db 'File saved as /rd/1/.download', 0
|
download_complete db 'File saved as /rd/1/.download', 0
|
||||||
display_from dd 20
|
|
||||||
pos dd 0
|
|
||||||
pagex dd 0
|
|
||||||
pagey dd 0
|
|
||||||
pagexs dd 80
|
|
||||||
command_on_off dd 0
|
|
||||||
text_type db 1
|
|
||||||
com2 dd 0
|
|
||||||
script dd 0
|
|
||||||
socketnum dd 0
|
|
||||||
|
|
||||||
addr dd 0
|
|
||||||
ya dd 0
|
|
||||||
len dd 0
|
|
||||||
|
|
||||||
title db 'HTTP Downloader', 0
|
title db 'HTTP Downloader', 0
|
||||||
|
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
@ -1132,11 +1021,6 @@ len_contentlength = 15
|
|||||||
s_chunked db 'Transfer-Encoding: chunked'
|
s_chunked db 'Transfer-Encoding: chunked'
|
||||||
len_chunked = $ - s_chunked
|
len_chunked = $ - s_chunked
|
||||||
|
|
||||||
is_body dd 0 ; 0 if headers, 1 if content
|
|
||||||
is_chunked dd 0
|
|
||||||
prev_chunk_end dd 0
|
|
||||||
cur_chunk_size dd 0
|
|
||||||
|
|
||||||
string0: db 'GET '
|
string0: db 'GET '
|
||||||
|
|
||||||
stringh db ' HTTP/1.1', 13, 10, 'Host: '
|
stringh db ' HTTP/1.1', 13, 10, 'Host: '
|
||||||
@ -1167,14 +1051,6 @@ proxyPort dd 80
|
|||||||
|
|
||||||
shared_name dd 0
|
shared_name dd 0
|
||||||
|
|
||||||
status dd 0x0
|
|
||||||
prev_status dd 0x0
|
|
||||||
|
|
||||||
onoff dd 0x0
|
|
||||||
|
|
||||||
nextupdate dd 0
|
|
||||||
winys dd 400
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
document_user db 'http://', 0
|
document_user db 'http://', 0
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
@ -1190,9 +1066,12 @@ document rb URLMAXLEN
|
|||||||
align 4
|
align 4
|
||||||
webAddr rb URLMAXLEN+1
|
webAddr rb URLMAXLEN+1
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
|
pos dd ?
|
||||||
align 4
|
socketnum dd ?
|
||||||
primary_buf rb primary_buffer_size
|
is_chunked dd ?
|
||||||
|
prev_chunk_end dd ?
|
||||||
|
cur_chunk_size dd ?
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
|
||||||
params rb 1024
|
params rb 1024
|
||||||
|
|
||||||
@ -1202,8 +1081,6 @@ proxyAddr rb 256
|
|||||||
proxyUser rb 256
|
proxyUser rb 256
|
||||||
proxyPassword rb 256
|
proxyPassword rb 256
|
||||||
|
|
||||||
rb 4096 ; stack
|
|
||||||
|
|
||||||
I_END:
|
I_END:
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user