From 319df5c78f7559fe628fbb0326dbc52f4e4c6770 Mon Sep 17 00:00:00 2001 From: Kostyantyn Ovechko Date: Tue, 10 Aug 2010 00:05:19 +0300 Subject: Replace in WebUI by XMLHttpRequest() --- segget/connection.cpp | 48 +++--- segget/ui_server.cpp | 429 ++++++++++++++++++++++++++++---------------------- segget/ui_server.h | 14 +- 3 files changed, 276 insertions(+), 215 deletions(-) diff --git a/segget/connection.cpp b/segget/connection.cpp index 77f18da..108a98b 100644 --- a/segget/connection.cpp +++ b/segget/connection.cpp @@ -308,37 +308,37 @@ string Tconnection::get_html_connection_progress(){ case MODE_CORAL_CDN: network_type_str="CDN"; break; } string progress_text= - (string)"" - +((distfile_percent>0)?"" + (string)"\n
\n\n\n" + +((distfile_percent>0)?"\n" :"") - +((unfinished_segments_distfile_percent>0)?"" + +((unfinished_segments_distfile_percent>0)?"\n" :"") - +((100-distfile_percent-unfinished_segments_distfile_percent>0)?"" + +((100-distfile_percent-unfinished_segments_distfile_percent>0)?"\n" :"") - +"
\n\n\n\n\n\n
" + +"
\n" // +" "+toString(distfile_percent+unfinished_segments_distfile_percent)+"%" - +" "+toString(distfile_percent)+"%" - +"" - +"" - +"" - +"" - +"
"+segment->parent_distfile->name+"
"+segment->url+"
" - +"" - +((segment_percent>0)?"" + +toString(distfile_percent)+"%" + +"\n"; return progress_text; }catch(...){ diff --git a/segget/ui_server.cpp b/segget/ui_server.cpp index 75de62c..ba31a12 100644 --- a/segget/ui_server.cpp +++ b/segget/ui_server.cpp @@ -254,19 +254,19 @@ string Tui_server::serve_browser_distfile_progress(Tdistfile * a_distfile){ }else{ distfile_percent=50; } - string result=(string)"\n" + +"
\n" + +"\n" + +"\n\n\n" + +"\n\n\n" + +"
"+segment->parent_distfile->name+"
\n"+segment->url+"
\n" + +"
" + +((segment_percent>0)?"" :"") - +((100-segment_percent>0)?"" + +((100-segment_percent>0)?"" :"") +"
" - +" "+toString(segment_percent)+"%" - +"
"+toString(segment->segment_num) - +""+toString(segment->try_num) - +""+toString(network_num) - +""+network_type_str - +""+toString(segment->downloaded_bytes) - +""+toString(segment->segment_size) - +""+speed_str - +""+avg_speed_str - +""+eta_string + +toString(segment_percent)+"%" + +""+toString(segment->segment_num) + +""+toString(segment->try_num) + +""+toString(network_num) + +""+network_type_str + +""+toString(segment->downloaded_bytes) + +""+toString(segment->segment_size) + +""+speed_str + +""+avg_speed_str + +""+eta_string +"" - +((distfile_percent>0)?"" + string result=(string)""; return result; }catch(...){ @@ -275,13 +275,15 @@ string Tui_server::serve_browser_distfile_progress(Tdistfile * a_distfile){ } } -string Tui_server::get_header(string title){ +string Tui_server::get_html_header(string title){ string header; header=(string)"HTTP/1.0 200 OK\n\n" - +" Segget - "+title+"" + +"" +// +"" + +" Segget - "+title+"" +"" - +"
" + +((distfile_percent>0)?"" :"") - +((100-distfile_percent>0)?"" + +((100-distfile_percent>0)?"" :"") +"
" +toString(distfile_percent)+"%" +"
"+a_distfile->name - +"statusToColor()+"\">"+a_distfile->statusToString() - +""+toString(a_distfile->dld_segments_count) - +""+toString(a_distfile->segments_count) - +""+toString(a_distfile->dld_bytes) - +""+toString(a_distfile->size) + +"statusToColor()+"\">"+a_distfile->statusToString() + +""+toString(a_distfile->dld_segments_count) + +""+toString(a_distfile->segments_count) + +""+toString(a_distfile->dld_bytes) + +""+toString(a_distfile->size) +"
" - +"" + +"
\n" + +"" +"" +"" +"" @@ -289,8 +291,8 @@ string Tui_server::get_header(string title){ +"" +"" +"" - +"" - +"" + +"\n" + +"" +"" +"" +"" @@ -298,58 +300,63 @@ string Tui_server::get_header(string title){ +"" +"" +"" - +"" - +"
\"Segments\"\"Distfiles\"\"Stats\"\"Log\"\"Errors\"Log\"
ConnectionsDistfilesStatsLogErrors logRSS
" - +"

"+title+"

"; + +"
\n" + +"

"+title+"

\n"; return header; } -string Tui_server::get_footer(){ +string Tui_server::get_html_footer(){ return ""; } -string Tui_server::get_stats(){ +string Tui_server::get_html_stats(){ ulong total_progress; if (stats.total_size>0){ total_progress=(stats.total_size-stats.dld_size)*100/stats.total_size; }else total_progress=0; string stats_str= - (string)"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" -// +"" -// +"" - +"
Up time"+secsToString(time_left_since(stats.segget_start_time)/1000)+"
Distfiles
Downloaded distfiles"+toString(stats.dld_distfiles_count)+"
Bytes downloaded"+toString(stats.dld_size)+"
Total progress"+toString(total_progress)+"%
Distfiles left to download"+toString(stats.distfiles_count-stats.dld_distfiles_count)+"
Bytes left to download"+toString(stats.total_size-stats.dld_size)+"
Distfiles total"+toString(stats.distfiles_count)+"
Bytes total"+toString(stats.total_size)+"
Segments
Downloaded segments"+toString(stats.dld_segments_count)+"
Segmentss left to download"+toString(stats.segments_count-stats.dld_segments_count)+"
Segments total"+toString(stats.segments_count)+"
Connections
Failed connections"+toString(stats.fails_counter)+"
AVG speed of active connections"+speedToString(stats.avg_total_speed)+"
AVG speed since segget start"+speedToString(stats.dld_size*1000/time_left_since(stats.segget_start_time))+"
AVG speed since segget start except idle times"+speedToString(stats.avg_total_speed)+"
"; + (string)"\n" + +"\n" + +" \n" + +" \n" + +"\n" + +"\n" + +" \n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" +// +"" +// +"" + +"
Up time"+secsToString(time_left_since(stats.segget_start_time)/1000)+"
Distfiles
Downloaded distfiles"+toString(stats.dld_distfiles_count)+"
Bytes downloaded"+toString(stats.dld_size)+"
Total progress"+toString(total_progress)+"%
Distfiles left to download"+toString(stats.distfiles_count-stats.dld_distfiles_count)+"
Bytes left to download"+toString(stats.total_size-stats.dld_size)+"
Distfiles total"+toString(stats.distfiles_count)+"
Bytes total"+toString(stats.total_size)+"
Segments
Downloaded segments"+toString(stats.dld_segments_count)+"
Segmentss left to download"+toString(stats.segments_count-stats.dld_segments_count)+"
Segments total"+toString(stats.segments_count)+"
Connections
Failed connections"+toString(stats.fails_counter)+"
AVG speed of active connections"+speedToString(stats.avg_total_speed)+"
AVG speed since segget start"+speedToString(stats.dld_size*1000/time_left_since(stats.segget_start_time))+"
AVG speed since segget start except idle times"+speedToString(stats.avg_total_speed)+"
\n"; return stats_str; } -string Tui_server::get_mirrors_stats(){ - string stats_str=(string)"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +""; +string Tui_server::get_html_mirrors_stats(){ + string stats_str=(string)"
URL" - +"Active connectionsAVG speed per connection**Failed downloadsSuccessful downloadsFail ratioUsage time**, secSuccesfuly downloaded bytesHonesty
\n" + +"\n\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n"; map::iterator iter; for( iter = mirror_list.begin(); iter != mirror_list.end(); iter++ ) { ulong avg_speed; @@ -362,18 +369,18 @@ string Tui_server::get_mirrors_stats(){ fail_ratio=(iter->second->failed_downloads)*100/(iter->second->failed_downloads+iter->second->successful_downloads); }else fail_ratio=0; stats_str=stats_str - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +""; + +"\n\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n"; } - stats_str=stats_str+"
URLActive connectionsAVG speed per connection**Failed downloadsSuccessful downloadsFail ratioUsage time**, secSuccesfuly downloaded bytesHonesty
"+iter->first+""+toString(iter->second->active_num)+""+speedToString(avg_speed)+""+toString(iter->second->failed_downloads)+""+toString(iter->second->successful_downloads)+""+toString(fail_ratio)+"%"+toString(iter->second->dld_time)+""+toString(iter->second->dld_size)+""+toString(iter->second->honesty)+"
\n"+iter->first+""+toString(iter->second->active_num)+""+speedToString(avg_speed)+""+toString(iter->second->failed_downloads)+""+toString(iter->second->successful_downloads)+""+toString(fail_ratio)+"%"+toString(iter->second->dld_time)+""+toString(iter->second->dld_size)+""+toString(iter->second->honesty)+"
"; + stats_str=stats_str+"\n"; stats_str=stats_str+"

** NOTE: When a mirror has N simultaneous connections " +"\"Usage time\" will be increasing N times faster, therefore \"AVG speed per connection\" will " @@ -383,43 +390,104 @@ string Tui_server::get_mirrors_stats(){ } -string Tui_server::get_connections_info(){ +string Tui_server::get_html_connections(){ try{ - string result=(string)"

" - +"

Active connections: "+toString(stats.active_connections_counter)+"/"+toString(settings.max_connections)+"

" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +"" - +""; + string result=(string)"
\n" + +"

Active connections: "+toString(stats.active_connections_counter)+"/"+toString(settings.max_connections)+"

\n" + +"
Distfile progressDistfile nameSegment progressSegment #TryNetworkBytesSpeedETA
NumTypeDownloadedTotalCurrentAverage
\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"\n"; for (uint connection_num = 0; connection_num < settings.max_connections; ++connection_num) { // debug("connection_num:"+toString(connection_num)); if (connection_array[connection_num].active){ - result=result+""+connection_array[connection_num].get_html_connection_progress()+""; + result=result+""+connection_array[connection_num].get_html_connection_progress()+"\n"; } } - result=result+"
Distfile progressDistfile nameSegment progressSegment #TryNetworkBytesSpeedETA
NumTypeDownloadedTotalCurrentAverage
"; + result=result+"\n\n"; return result; }catch(...){ error_log("Error: ui_server.cpp: get_connections_info()"); return ""; } } +string Tui_server::get_html_distfiles(){ + try{ + debug("Sending to client distfiles_num:"+toString(request_server_pkg.Pdistfile_list.size())); + string distfiles_html=(string)"
\n" + +"" + +" " + +"\n" + +" \n"; + for (ulong distfile_num=0; distfile_num"+serve_browser_distfile_progress(request_server_pkg.Pdistfile_list[distfile_num])+"\n"; + debug("Sending to client:"+request_server_pkg.Pdistfile_list[distfile_num]->get_distfile_progress_str()); + } + for (ulong distfile_num=0; distfile_num"+serve_browser_distfile_progress(proxy_fetcher_pkg.Pdistfile_list[distfile_num])+"\n"; + debug("Sending to client:"+proxy_fetcher_pkg.Pdistfile_list[distfile_num]->get_distfile_progress_str()); + } + distfiles_html=distfiles_html+"
Progress" + +" Name" + +" Status" + +" Segments" + +" Bytes" + +"
Downloaded" + +" Total" + +" Downloaded" + +" Total" + +"
"; + return distfiles_html; + }catch(...){ + error_log("Error: ui_server.cpp: get_connections_info()"); + return ""; + } +} + +string Tui_server::get_html_log(){ + try{ + string log_html=(string)"
"; + for (uint log_line_num=0; log_line_num"; + } + log_html=log_html+"
"+log_lines[log_line_num]+"
"; + return log_html; + }catch(...){ + error_log("Error: ui_server.cpp: get_html_log()"); + return ""; + } +} + +string Tui_server::get_html_errors_log(){ + try{ + debug("Sending to client distfiles_num:"+toString(request_server_pkg.Pdistfile_list.size())); + string error_log_html=(string)"
"; + for (uint error_log_line_num=0; error_log_line_num"; + } + error_log_html=error_log_html+"
"+error_log_lines[error_log_line_num]+"
"; + return error_log_html; + }catch(...){ + error_log("Error: ui_server.cpp: get_html_error_log()"); + return ""; + } +} string Tui_server::get_rss_info(){ try{ @@ -456,54 +524,41 @@ string Tui_server::get_rss_info(){ return ""; } } - -/* -string Tui_server::get_rss_info(){ - try{ - string rss_result= - (string)"" - +"" - +""+settings.rss_title+"" - +""+settings.rss_description+"" - +"" - +"" - +"/rss.xml" - +"seggetd" - +"/img/segget_feed.jpg" - +"segget_feed.jpg" - +"2010-08-06T21:43:52Z" -// +""+get_time(settings.general_log_time_format)+"" - +"seggetd"; - for (uint rss_line_num=0; rss_line_num" - +""+rss_distfile_lines[rss_line_num]+"" - +"2010-08-06T21:43:52Z" -// +""+rss_time_lines[rss_line_num]+"" - +"seggetd" -// fastinetserver@gmail.com - +"" -// -// Kostyantyn Ovechko -// fastinetserver@gmail.com -// -// +""+rss_time_lines[rss_line_num]+"" - +"2010-08-06T21:43:52Z" - +"" - +""+toString(rss_line_num)+"" - +"" - +"
" - +"Downloaded distfile "+rss_distfile_lines[rss_line_num] - +"
"; - } - rss_result=rss_result+"
"; - return rss_result; - }catch(...){ - error_log("Error: ui_server.cpp: get_rss_info()"); - return ""; - } +string Tui_server::get_ajax_for(string content_name){ + string ajax_str=(string)"\n\n"; + return ajax_str; } -*/ + void Tui_server::serve_browser(uint fd, string msg){ try{ debug("Web browser connected"); @@ -515,70 +570,72 @@ void Tui_server::serve_browser(uint fd, string msg){ debug("Web browser requests URI:"+uri); } if (uri=="/connections"){ - send_to_fd(fd,get_header("Connections")); - send_to_fd(fd,get_connections_info()); - send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Connections")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_connections()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("connections")); + send_to_fd(fd,get_html_footer()); + }else if (uri=="/connections_"){ + send_to_fd(fd,get_html_connections()); }else if ((uri=="/rss") or (uri=="/rss.rss") or (uri=="/rss.xml")){ send_to_fd(fd,get_rss_info()); }else if (uri=="/stats"){ - ui_server.send_to_fd(fd,get_header("Stats")); - ui_server.send_to_fd(fd,get_stats()); - ui_server.send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Stats")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_stats()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("stats")); + send_to_fd(fd,get_html_footer()); + }else if (uri=="/stats_"){ + ui_server.send_to_fd(fd,get_html_stats()); }else if (uri=="/mirrors_stats"){ - ui_server.send_to_fd(fd,get_header("Mirrors stats")); - ui_server.send_to_fd(fd,get_mirrors_stats()); - ui_server.send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Mirrors stats")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_mirrors_stats()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("mirrors_stats")); + send_to_fd(fd,get_html_footer()); + }else if (uri=="/mirrors_stats_"){ + send_to_fd(fd,get_html_mirrors_stats()); }else if (uri=="/log"){ - ui_server.send_to_fd(fd,get_header("Log")); - ui_server.send_to_fd(fd,"
"); - for (uint log_line_num=0; log_line_num"); - } - ui_server.send_to_fd(fd,"
"+log_lines[log_line_num]+"
"); - ui_server.send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Log")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_log()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("log")); + send_to_fd(fd,get_html_footer()); + }else if (uri=="/log_"){ + send_to_fd(fd,get_html_log()); }else if (uri=="/errors_log"){ - ui_server.send_to_fd(fd,get_header("Errors log")); - ui_server.send_to_fd(fd,"
"); - for (uint error_log_line_num=0; error_log_line_num"); - } - ui_server.send_to_fd(fd,"
"+error_log_lines[error_log_line_num]+"
"); - ui_server.send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Errors log")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_errors_log()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("errors_log")); + send_to_fd(fd,get_html_footer()); + }else if (uri=="/errors_log_"){ + send_to_fd(fd,get_html_errors_log()); }else if (uri=="/distfiles"){ - ui_server.send_to_fd(fd,get_header("Distfiles")); - ui_server.send_to_fd(fd,"
"); - debug("Sending to client distfiles_num:"+toString(request_server_pkg.Pdistfile_list.size())); - ui_server.send_to_fd(fd,(string)"" - +""); - ui_server.send_to_fd(fd,(string)"" - +""); - for (ulong distfile_num=0; distfile_num"+serve_browser_distfile_progress(request_server_pkg.Pdistfile_list[distfile_num])+""); - debug("Sending to client:"+request_server_pkg.Pdistfile_list[distfile_num]->get_distfile_progress_str()); - } - for (ulong distfile_num=0; distfile_num"+serve_browser_distfile_progress(proxy_fetcher_pkg.Pdistfile_list[distfile_num])+""); - debug("Sending to client:"+proxy_fetcher_pkg.Pdistfile_list[distfile_num]->get_distfile_progress_str()); - } - ui_server.send_to_fd(fd,"
Progress" - +"Name" - +"Status" - +"Segments" - +"Bytes" - +"
Downloaded" - +"Total" - +"Downloaded" - +"Total" - +"
"); - ui_server.send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Distfiles")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_distfiles()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("distfiles")); + send_to_fd(fd,get_html_footer()); + }else if (uri=="/distfiles_"){ + ui_server.send_to_fd(fd,get_html_distfiles()); }else if (uri=="/favicon.ico"){ ui_server.send_binary_to_fd(fd,"./webui/img/favicon.ico"); }else if (uri.find("/img")!=uri.npos){ ui_server.send_binary_to_fd(fd,"./webui"+uri); }else{ - send_to_fd(fd,get_header("Connections")); - send_to_fd(fd,get_connections_info()); - send_to_fd(fd,get_footer()); + send_to_fd(fd,get_html_header("Connections")); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_html_connections()); + send_to_fd(fd,"\n"); + send_to_fd(fd,get_ajax_for("connections")); + send_to_fd(fd,get_html_footer()); } shutdown(fd,2); close(fd); diff --git a/segget/ui_server.h b/segget/ui_server.h index cdc0931..0b0a092 100644 --- a/segget/ui_server.h +++ b/segget/ui_server.h @@ -64,13 +64,17 @@ class Tui_server{ void send_distfile_progress_msg_to_all_clients(string msg); void serve_tuiclient(uint fd, string msg); ulong send_binary_to_fd(uint fd, string image_file_name); - string get_header(string title); - string get_footer(); string serve_browser_distfile_progress(Tdistfile * a_distfile); - string get_connections_info(); + string get_html_header(string title); + string get_html_footer(); + string get_html_connections(); + string get_html_distfiles(); + string get_html_stats(); + string get_html_log(); + string get_html_errors_log(); + string get_html_mirrors_stats(); + string get_ajax_for(string content_name); string get_rss_info(); - string get_stats(); - string get_mirrors_stats(); void serve_browser(uint fd, string msg); }; -- cgit v1.2.3-65-gdbad