file_upload_cgi
1.0.0
CGI Unggah File adalah aplikasi web yang ditulis dalam Perl CGI untuk membatasi tarif unggahan file ke pengguna.
Aplikasi ini ditulis di Debian Linux (Jessie).
Anda harus menginstal Nginx, MySQL dan Perl CGI.
Konfigurasikan Nginx untuk menggunakan aturan rewrite . Edit File /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}
Simpan skrip getfile.cgi di direktori /var/www/html/yoursites.org/public_html/cgi
Masuk ke MySQL sebagai root pengguna
CREATE DATABASE upload ;
CREATE USER ' user1 '@ ' localhost ' IDENTIFIED BY ' password1 ' ;
GRANT ALL PRIVILEGES ON ` smscgi ` . * TO ' user1 ' @ ' localhost ' ;
QUIT; Kemudian jalankan pernyataan SQL di file smscgi.db
mysql -u user1 -p upload < upload.db
Buat File Dummy 1MB dan 10MB dan simpan di direktori /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
Restart nginx
/etc/init.d/nginx restart
Menggunakan wget unduh file 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)