Merhaba, fantezi fikir serisinin devamı olarak; bir web server ve web server üzerinden bir dosya paylaşım ağı yaptım.
gerek kalmıyor. Yeterince hızlı ve düşük dosya boyutlarında çok işe yarıyor.
Sadece Text ve Jpg/Jpeg gibi grafikleri test ettim. Her zamanki gibi hedefim bir temel oluşturmak. Bundan güzel projeler çıkarmak isteyen arkadaşlar olursa diye.
-> Paylaşım ağını açarsınız.
-> Paylaşım ağını kapatırsınız.
-> mIRC Ana dizininizdeki bir dosyayı paylaşırsınız. Örnek:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias payport return 3000
alias payip return $iif($server,$ip,127.0.0.1)
alias p-ac { echo -a Paylaşım açıldı! | if ($sock(paylasim)) sockclose paylasim | socklisten paylasim $payport }
alias p-kapat { echo -a Paylaşım kapatıldı! | if (!$sock(paylasim)) return | sockclose paylasim }
alias linkver { if !$sock(paylasim) { echo 4 -a Önce Paylaşımı açın! | return } | if $1 { msg $active $+(http://,$payip,:,$payport,/indir?,$1) } }
on *:socklisten:paylasim: sockaccept $+(q,$r(1,999))
on *:sockread:q*: {
sockread %s | tokenize 32 %s
if $regex($1-,/Get.+HTTP\/1\.1/i) {
datagonder $sockname
if $len($2) = 1 { anasayfa $sockname }
else {
if $regex($2,/\/indir\?.+/i) { echo 3 -a *Bilgi:5 $sock($sockname).ip IP Adresi $token($2,2,63) Dosyası için paylaşım ağına girdi. | dindir $sockname $token($2,2,63) }
else { sockwrite -n $sockname <html><meta http-equiv="refresh" content="0; URL= $+ $+(http://,$payip,:,$payport) $+ " /></html> | sockclose $sockname }
}
}
}
alias datagonder {
sockwrite -n $1 HTTP/1.0 200 Ok \n\r
sockwrite -n $1 Connection: Keep-Alive
sockwrite -n $1 Content-Type: text/html; charset=UTF-8
sockwrite -n $1 Vary: Accept-Encoding
sockwrite -n $1 Date: $fulldate
sockwrite -n $1 $crlf $crlf
}
alias dindir {
if $isfile($2) {
sockwrite -n $1 <script>
if !$regex($token($2,$token($2,0,46),46),/(jpg|png)/i) {
sockwrite $1 var ba = `
databol $2 $1
sockwrite -n $1 `;
sockwrite -n $1 var dt = [];
sockwrite -n $1 for (var i = 0; i < ba.length; i++) $chr(123) $&
dt.push(ba.charCodeAt(i)); $&
$chr(125)
}
if !$regex($token($2,$token($2,0,46),46),/(jpg|png)/i) {
sockwrite -n $1 let base64data = btoa(unescape(encodeURIComponent(String.fromCharCode.apply(null, dt))));
}
else {
sockwrite $1 let base64data = "
databol $2 $1 image
sockwrite $1 ";
sockwrite $1 $crlf
}
sockwrite -n $1 let a = document.createElement('a');
if $regex($token($2,$token($2,0,46),46),/(jpg|png)/i) {
sockwrite -n $1 a.href = 'data:image/png;base64,' + base64data;
}
else {
sockwrite -n $1 a.href = 'data:;base64,' + base64data;
}
sockwrite -n $1 a.download = $+(',$2,');
sockwrite -n $1 a.click();
sockwrite -n $1 </script>
sockwrite -n $1 <!DOCTYPE html> $&
<html> $&
<head><title>Dosya indirme sayfasi</title></head> $&
<body bgcolor="black"> $&
<center><font size="15px" color="white">Dosya iniyor. Hadi bakim!</font></center> $&
</body> $&
</html>
}
else {
sockwrite -n $1 <!DOCTYPE html> $&
<html> $&
<head><title>Dosya indirme sayfasi</title></head> $&
<body bgcolor="black"> $&
<center><font size="15px" color="white">Aradiginiz dosya sistemde yok.</font></center> $&
</body> $&
</html>
}
sockclose $1
if $fopen(0) { fclose paylasim }
}
alias anasayfa {
sockwrite -n $1 <!DOCTYPE html> $&
<html> $&
<head><title>Dosya indirme sayfasi</title></head> $&
<body bgcolor="black"> $&
<center><font size="15px" color="white">Dosya indirme sitemi anasayfa.</font></center> $&
</body> $&
</html>
sockclose $1
}
alias databol {
if $3 = image {
bread $qt($1) 0 $file($1).size &a
if $encode(&a,mb) {
var %dboyut $bvar(&a,0)
var %bolum $calc(%dboyut / 8192)
if $token(%bolum,0,46) {
var %newbolum $calc($token(%bolum,1,46) + 1),%q 1
while %q <= %newbolum {
var %pozisyon $iif(%q = 1,1,$calc($calc($calc(%q - 1) * 8192) + 1))
bcopy &file 1 &a %pozisyon 8192
if !$bvar(&file,0) { break | retrun }
;$iif(%q = 1,echo -a $bvar(&file,1-99).text,)
sockwrite $2 &file
bunset &file
inc %q
}
}
else {
var %q 1 | while %q <= %bolum {
var %pozisyon $iif(%q = 1,8192,$calc($calc($calc(%q - 1) * 8192) + 1))
bcopy &file 1 &a %pozisyon 8192
sockwrite $2 &file
bunset &file
inc %q
}
}
}
return
}
if $file($1).size > 16384 {
.fopen data $1 | noop $fread(data,9999999999999,&a)
var %dboyut $bvar(&a,0)
var %bolum $calc(%dboyut / 8192)
if $len(%bolum) > 1 {
var %newbolum $calc($token(%bolum,1,46) + 1),%q 1
while %q <= %newbolum {
var %pozisyon $calc(%q - 1)
bread $qt($1) %pozisyon 8192 &file
sockwrite $2 &file
bunset &file
inc %q
}
}
else {
var %q 1 | while %q <= %bolum {
var %pozisyon $calc(%q - 1)
bread $qt($1) %pozisyon 8192 &file
sockwrite $2 &file
bunset &file
inc %q
}
}
.fclose data
}
else {
bread $qt($1) 0 $file($1).size &file
sockwrite $2 &file
}
}