file_upload_cgi
1.0.0
El archivo de carga CGI es una aplicación web escrita en Perl CGI para limitar la tasa de carga de un archivo al usuario.
Esta aplicación está escrita en Debian Linux (Jessie).
Debe instalar Nginx, MySQL y Perl CGI.
Configure Nginx para usar la regla rewrite . Editar archivo /etc/nginx/sites-enabled/default
server {
listen 80 ;
listen [::]:80;
# SSL configuration
#
listen 443 ssl;
listen [::]:443 ssl;
include snippets/yoursites.org.conf;
server_name yoursites.org;
access_log /var/www/html/yoursites.org/logs/access.log;
error_log /var/www/html/yoursites.org/logs/error.log;
root /var/www/html/yoursites.org/public_html;
index index.html index.htm index.php;
rewrite ^/files/(.*)$ /cgi/getfile.cgi?f= $1 last ;
include php-fastcgi;
include perl-fastcgi;
} mkdir /var/www/html/yoursites.org
mkdir /var/www/html/yoursites.org/{files,logs,public_html,public_html/cgi}
Guardar el script getfile.cgi en directorio /var/www/html/yoursites.org/public_html/cgi
Inicie sesión en MySQL como root de usuario
CREATE DATABASE upload ;
CREATE USER ' user1 '@ ' localhost ' IDENTIFIED BY ' password1 ' ;
GRANT ALL PRIVILEGES ON ` smscgi ` . * TO ' user1 ' @ ' localhost ' ;
QUIT; Luego ejecute las declaraciones SQL en el archivo smscgi.db
mysql -u user1 -p upload < upload.db
Cree File Dummy 1MB y 10MB y guarde en Directory /var/www/html/yoursites.org/files
DST=/var/www/html/yoursites.org/files
dd if=/dev/urandom of=${DST}/file-1MB.dat bs=1M count=1
dd if=/dev/urandom of=${DST}/file-10MB.dat bs=1M count=10
Reiniciar nginx
/etc/init.d/nginx restart
Usando wget descargue el file-1MB.dat
$ wget http://yoursites.org/files/file-1MB.dat
--2024-08-25 15:34:15-- http://yoursites.org/files/file-1MB.dat
Resolving yoursites.org (yoursites.org)... 1.2.3.4
Connecting to yoursites.org (yoursites.org)|1.2.3.4|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1048576 (1,0M) [application/x-download]
Saving to: ‘file-1MB.dat’
file-1MB.dat 100%[==================================>] 1,00M 112KB/s in 9,1s
2024-08-25 15:34:24 (112 KB/s) - ‘file-1MB.dat’ saved [1048576/1048576]
mysql > select * from getfile;
+ -- --+---------------+-------------+------------+---------------------+
| id | filename | ua | ip | date |
+ -- --+---------------+-------------+------------+---------------------+
| 1 | file - 10MB . dat | Wget / 1 . 21 . 2 | 103 . 47 . 1 . 2 | 2024 - 08 - 25 17 : 01 : 10 |
| 2 | file - 10MB . dat | Wget / 1 . 21 . 2 | 103 . 47 . 1 . 2 | 2024 - 08 - 25 17 : 02 : 17 |
+ -- --+---------------+-------------+------------+---------------------+
2 rows in set ( 0 . 01 sec)
mysql > select * from log limit 3701 , 3703 ;
+ -- --+------------+-------------+------------------+-------+--------+
| id | ip | ua | stime | etime | status |
+ -- --+------------+-------------+------------------+-------+--------+
| 1 | 103 . 47 . 1 . 2 | Wget / 1 . 21 . 2 | 1724579980 . 00809 | 2 | 1 |
| 2 | 103 . 47 . 1 . 2 | Wget / 1 . 21 . 2 | 1724580083 . 71145 | 2 | 1 |
+ -- --+------------+-------------+------------------+-------+--------+
2 rows in set ( 0 . 00 sec)