Server IP : 195.201.23.43 / Your IP : 18.188.46.93 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/usermin/mysql/ |
Upload File : |
#!/usr/bin/perl # Export the CSV require './mysql-lib.pl'; &ReadParse(); &error_setup($text{'csv_err'}); &can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'}); $access{'edonly'} && &error($text{'dbase_ecannot'}); # Validate inputs if ($in{'dest'}) { $in{'file'} =~ /^([a-z]:)?\/\S/ || &error($text{'csv_efile'}); $access{'buser'} || &error($text{'cvs_ebuser'}); } if (!$in{'where_def'}) { $in{'where'} =~ /\S/ || &error($text{'csv_ewhere'}); } # Execute the SQL @cols = split(/\0/, $in{'cols'}); @cols || &error($text{'csv_ecols'}); $cmd = "select ".join(",", map { "e_table($_) } @cols). " from "."estr($in{'table'}); if (!$in{'where_def'}) { $cmd .= " where ".$in{'where'}; } $rv = &execute_sql($in{'db'}, $cmd); # Open the destination if (!$in{'dest'}) { print "Content-type: text/plain\n\n"; $fh = STDOUT; } elsif ($access{'buser'} eq 'root') { # Open target file directly &open_tempfile(OUT, ">$in{'file'}"); $fh = OUT; } else { # Run through cat command $cmd = &command_as_user($access{'buser'}, 0, "cat >"."e_path($in{'file'})); &open_execute_command(OUT, $cmd, 0); $fh = OUT; } # Send the data if ($in{'headers'}) { unshift(@{$rv->{'data'}}, $rv->{'titles'}); } foreach $r (@{$rv->{'data'}}) { if ($in{'format'} == 0) { print $fh join(",", map { "\""."e_csv($_, "\"\n")."\"" } @$r); } elsif ($in{'format'} == 1) { print $fh join(",", map { "e_csv($_, ",\n") } @$r); } elsif ($in{'format'} == 2) { print $fh join("\t", map { "e_csv($_, "\t\n") } @$r); } print $fh "\n"; } # All done .. tell the user if ($in{'dest'}) { &close_tempfile(OUT); $desc = &text('table_header', "<tt>$in{'table'}</tt>", "<tt>$in{'db'}</tt>"); &ui_print_header($desc, $text{'csv_title'}, "", "csv"); @st = stat($in{'file'}); print &text('csv_done', "<tt>$in{'file'}</tt>", &nice_size($st[7])),"<p>\n"; &ui_print_footer( "@{[&get_webprefix()]}/$module_name/edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'}, &get_databases_return_link($in{'db'}), $text{'index_return'}); } sub quote_csv { local ($str, $q) = @_; $str =~ s/\r//g; foreach my $c (split(//, $q)) { local $qc = $c eq "\"" ? "\\\"" : $c eq "\n" ? "\\n" : $c eq "," ? "\\," : $c eq "\t" ? "\\t" : $c; $str =~ s/\Q$c\E/$qc/g; } return $str; }Private