Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- alias -l eval_ascii {
- bset &char 1 $1
- return &char
- }
- alias -l codepage {
- ; cp1251 >>> utf8
- bset -t $+(&,$1,::,codepage) 1 $replace($bvar($1,1-).text,$chr(192),А,$chr(193),Б,$chr(194),В,$chr(195),Г,$chr(196),Д,$chr(197),Е,$chr(168),Ё,$chr(198),Ж,$chr(199),З,$chr(200),И,$chr(201),Й,$chr(202),К,$chr(203),Л,$chr(204),М,$chr(205),Н,$chr(206),О,$chr(207),П,$chr(208),Р,$chr(209),С,$chr(210),Т,$chr(211),У,$chr(212),Ф,$chr(213),Х,$chr(214),Ц,$chr(215),Ч,$chr(216),Ш,$chr(217),Щ,$chr(218),Ъ,$chr(219),Ы,$chr(220),Ь,$chr(221),Э,$chr(222),Ю,$chr(223),Я,$chr(224),а,$chr(225),б,$chr(226),в,$chr(227),г,$chr(228),д,$chr(229),е,$chr(184),ё,$chr(230),ж,$chr(231),з,$chr(232),и,$chr(233),й,$chr(234),к,$chr(235),л,$chr(236),м,$chr(237),н,$chr(238),о,$chr(239),п,$chr(240),р,$chr(241),с,$chr(242),т,$chr(243),у,$chr(244),ф,$chr(245),х,$chr(246),ц,$chr(247),ч,$chr(248),ш,$chr(249),щ,$chr(250),ъ,$chr(251),ы,$chr(252),ь,$chr(253),э,$chr(254),ю,$chr(255),я)
- return $+(&,$1,::,codepage)
- }
- on *:START: {
- if ($hget(socks)) hfree $v1
- hmake socks
- hadd socks username ergjdsoig
- hadd socks password 5h64yhgdf
- socklisten -d 127.0.0.1 socks 7776
- }
- on *:SOCKLISTEN:socks*: {
- if (socks.aux.* iswm $sockname) {
- var %active = $replace($sockname,aux,active)
- var %listen = $replace($sockname,aux,listen)
- sockaccept %active
- sockmark %active %listen
- sockwrite %listen $eval_ascii(5 0 0 1 $replace($sock(%active).ip,.,$chr(32)) $replace($gettok($longip($sock(%active).bindport),3-,46),.,$chr(32)))
- }
- else {
- hinc socks sockets
- var %sock = $+(socks.listen.,$hget(socks,sockets))
- sockaccept %sock
- sockmark %sock $replace(%sock,listen,active) H
- }
- }
- on *:SOCKOPEN:socks.*: {
- tokenize 32 $sock($sockname).mark
- if (socks.active.* iswm $sockname) {
- if ($sockerr) sockwrite $1 $eval_ascii(5 4)
- else sockwrite $1 $eval_ascii(5 0)
- }
- }
- on *:SOCKREAD:socks.*: {
- if ($sockerr) return
- tokenize 32 $sock($sockname).mark
- if ($sock($1).sq > 8192) return
- sockread $+(&,$sockname)
- if ($sockbr = 0) return
- if (socks.listen.* iswm $sockname) {
- if ($2 == H) {
- if (2 isin $bvar($+(&,$sockname),3,$bvar($+(&,$sockname),2))) sockwrite $sockname $eval_ascii(5 2)
- else sockwrite $sockname $eval_ascii(5 0)
- if ($hget(socks,username)) || ($hget(socks,password)) sockmark $sockname $1 A
- else sockmark $sockname $1 R
- }
- elseif ($2 == A) {
- var %access = $false
- if ($bvar($+(&,$sockname),1) == 1) {
- if ($hget(socks,username) == $bvar($+(&,$sockname),3,$bvar($+(&,$sockname),2,1)).text) && ($hget(socks,password) == $bvar($+(&,$sockname),$calc(4 + $bvar($+(&,$sockname),2,1)),$calc(3 + $bvar($+(&,$sockname),2,1))).text) var %access = $true
- sockwrite $sockname $eval_ascii(1 0)
- sockmark $sockname $1 R
- }
- if (%access == $false) sockclose $sockname
- }
- elseif ($2 == R) {
- if ($bvar($+(&,$sockname),1) == 5) {
- var %ip, %port
- if ($bvar($+(&,$sockname),4) == 1) {
- var %ip = $replace($bvar($+(&,$sockname),5,4),$chr(32),.)
- var %port = $longip($replace(0 0 $bvar($+(&,$sockname),9,2),$chr(32),.))
- }
- elseif ($bvar($+(&,$sockname),4) == 3) {
- var %i = 6 + $bvar($+(&,$sockname),5)
- var %ip = $bvar($+(&,$sockname),6,$bvar($+(&,$sockname),5)).text
- var %port = $longip($replace(0 0 $bvar($+(&,$sockname),%i) $bvar($+(&,$sockname),$calc(%i + 1)),$chr(32),.))
- }
- else {
- sockwrite $sockname $eval_ascii(5 8 0 1 0 0 0 0 0 0)
- sockclose $sockname
- return
- }
- if ($bvar($+(&,$sockname),2) == 1) {
- sockopen $1 %ip %port
- sockmark $1 $sockname
- sockmark $sockname $1
- }
- elseif ($bvar($+(&,$sockname),2) == 2) {
- var %port = 1024, %sock = $replace($1,active,aux)
- while (!$portfree(%port)) inc %port
- socklisten %sock %port
- sockwrite $sockname $eval_ascii(5 0 0 1 $replace($sock(socks).bindip,.,$chr(32)) $replace($gettok($longip(%port),3-,46),.,$chr(32)))
- sockmark $sockname %sock
- }
- else {
- sockwrite $sockname $eval_ascii(5 7 0 1 0 0 0 0 0 0)
- sockclose $sockname
- }
- }
- else sockclose $sockname
- }
- else {
- if ($sock($1)) sockwrite $1 $codepage($+(&,$sockname))
- else sockclose $sockname
- }
- }
- elseif (socks.active.* iswm $sockname) {
- if ($sock($1)) sockwrite $1 $codepage($+(&,$sockname))
- else sockclose $sockname
- }
- }
- on *:SOCKCLOSE:socks.*: {
- sockclose $+(socks.*.,$gettok($sockname,3,46))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement