shell comander v2

Discussion in 'PHP' started by genom--, 17 Feb 2008.

  1. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    в общем типо скриптик писался для хранения базы шеллов и проверки их на валид и пиар

    дописал потоки, сортировку по пиару + переработал очистку - конфиг внутри скрипта



    reset - обновляет контект
    Sort by PR - сортировка по пиару
    check & PR all -- проверяет все линки на шеллы и ставит пиар по сайту
    save - сохраняет список в файл
    clean body - очищает окно проги но не файл
    clean - очищает от мусора линки на шеллы
    export - экспорт списка для продажи + там еще возможность дампа в файл - по дефолту на рабочий стол в винде
    add to base добавление того что у вас в окне к файлу и обновление всего файла с дополнением

    сопстна все

    извра скриптик с извра кодом =)

    Code:
    #!/usr/bin/perl    ################## shell<->commander V2 #################  # coded by genom--  # специально для antichat.ru - ачат мы любим тебя - держись.  # NO SPLoA, NO WORLD !!!!!  # Спасибо друзьям,одептам и моей маме.  ################## волт 13. 2007 г.#################    use Tk;  use Tk::ROText;  use Tk::Frame;  use Tk::LabFrame;  use Tk::BrowseEntry;  use Tk::DialogBox;  use LWP::UserAgent;  use threads;  use threads::shared;  my $a:shared;  open as,'<shell.txt' or open as,'>shell.txt';close as;     my $ua = LWP::UserAgent->new;  $ua->timeout(5);  $ua->agent('Opera/9.00 (Windows NT 5.1; U; en)');  $ua->requests_redirectable(0);    $col='#330000';   # цвет фона -- вынес в переменную чтобы могли поменять если комуто не понравится  $tes='red';  # цвет шрифта в лейблах =)  $bgform='#cccc99';  # цвет фона  на текстовых полях  $focofo='#006600'; # цвет шрифта в формах   $butcol='#66cc33'; # цвет кнопок   $ff='{Tahoma} 7 bold'; # шрифт   $name='shell.txt'; # имя файла с бд.  $dum='C:\Documents and Settings\All Users\Рабочий стол\dump.txt'; # путь для дампа   $thr=3; # количество потоков     $typak=new MainWindow(title=>"[shell<-->commander] v2 - Private edition - only for my friends",-bg=>$col);  $typak->geometry('1015x500+0+190');  $typak->resizable(0,0);    $knp=$typak->LabFrame(-label=>'Commands',-bg=>$col,-foreground=>$tes)->pack();  $zone=$typak->Frame(-bg=>$col,-foreground=>$tes)->pack();  $knp->Button(-text=>'RESET',-width=>'6',-font=>$ff,-command=>\&reset,-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Sort by PR',-width=>'8',-font=>$ff,-command=>\sub{prsrt(split(/\n/,$acc->Contents))},-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Check & PR all',-width=>'14',-font=>$ff,-command=>\sub{$a=0;@am=split(/\n/,$acc->Contents);$a++foreach@am;for(1..$thr){threads->create(\&do);}},-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Save',-width=>'4',-font=>$ff,-command=>\&save,-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Clean body',-width=>'10',-font=>$ff,-command=>\&cl,-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Clean',-width=>'4',-font=>$ff,-command=>\&clean,-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Export',-width=>'6',-font=>$ff,-command=>\&exp,-background=>$butcol)->pack(-side=>'left');  $knp->Button(-text=>'Add to base',-width=>'10',-font=>$ff,-command=>[\&save,'ad'],-background=>$butcol)->pack(-side=>'left');  $acc=$zone->Scrolled('Text',-scrollbars=>'se',-font=>'{Tahoma} 8 bold',-height=>33,-width=>145,-background=>$bgform,-foreground=>$focofo)->pack(-side=>'left');  &ins;  MainLoop;    sub save{chomp($x=$acc->Contents);open asd,">$name" and print asd$x if@_[0]ne'ad';open asd,">>$name" and print asd "\n$x" if@_[0]eq'ad';close asd;&cl;&ins;}  sub cl{$acc->delete('1.0','end')}  sub ins{open asd,"<$name";$acc->insert('end',$_)while<asd>;close asd;}  sub clean{foreach(split(/\n/,$acc->Contents)){$acc->delete('1.0','2.0');$acc->insert('end',"$1\n")if~/(http:\/\/[^ ]*)/}}  sub reset{&cl;&ins;}  sub exp{my $itog;foreach(split(/\n/,$acc->Contents)){$itog.="$1 $2\n" if~/(http:\/\/[^ \/]*)[^ ]*(.*)/}  my $bl=$typak->DialogBox(-title   => 'Export....',-buttons => ["OK"]);  $bl->geometry('400x410');$exp=$bl->Scrolled('Text',-scrollbars => 'e', -height=>25, -width=>75)->pack();  $exp->insert('end',$itog);$bl->Button(-text=>'Dump',-width =>'6',-font =>$ff,-background=>$butcol,-command=>\sub{open spl,">".$dum;print spl $exp->Contents;close spl;})->pack();$bl->Show();$bl->destroy;}  sub do{while($a>0){$a-- and $sel=@am[$a];$it=ch($&) if $sel=~/http:\/\/[^ \n]*/;  $it.=' '.pr($&) if $sel=~/http:\/\/[^ \n\/]*/;chomp($zi=$acc->Contents);chomp($sel);$zi=~s|$sel|$sel  $it|;&cl;  $acc->insert('end',$zi);}}  sub ch{if($ua->head(@_[0])->as_string=~/200|401/){return '[OK]';}  elsif($ua->head(@_[0])->as_string=~/500/){return 'Bad connect...';}else{return'[BAD]';}}  sub pr{$k=@_[0];  if($ua->post("http://page-rank.org.ua/index.php",{'UrlList'=>$k,'CSV'=>'on'})->as_string=~/$k"[^\n]*/){  my $pr=$&;$pr=~s/$k",/PR=/;$pr=~s/PR=-1/PR=0/ig;return $pr;}else{return ' BAd pR';}}  sub prsrt{undef@st;for($w=10;$w>=0;$w--){foreach$a(@_){push @st=>"$a\n" if $a=~/PR=$w/;}}  foreach$a(@_){push@st=>"$a\n"if$a=~/PR=/ ne 1;}$acc->delete('1.0','end');$acc->insert('end',$_)foreach@st;}
    PS скачивайте на сайте в подписи
     
    #1 genom--, 17 Feb 2008
    Last edited: 17 Feb 2008
    7 people like this.
  2. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    потестил, зачотно, только поправить пришлось
    Code:
    sub ch{if($ua->head(@_[0])->as_string=~/[B]401[/B]/){return '[OK]';}
    :)
     
  3. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    нафиг 401??? из-за авторизации?
     
  4. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    да, иначе в беды кидает :)
     
  5. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    ... Tk.pm левый?
     
  6. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    perl - обрезаный

    тогдаб уже правил чтобы и без авторизации проканывало
    $ua->head(@_[0])->as_string=~/401/ or $ua->head(@_[0])->as_string=~/200/
    я просто обычно не ставлю дык мне в голову чет не пришло это =))
     
  7. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    можно так?
    $ua->head(@_[0])->as_string=~/401|200/

    genom--
    ActivePerl
    This is perl, v5.10.0 built for MSWin32-x86-multi-thread
     
    1 person likes this.
  8. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    genom--
    оч.негативное впечатление .. совершенно не читаемый код ..
    Code:
    perldoc perlstyle
    поскольку написано под винду..
    Code:
    $dum='C:\Documents and Settings\All Users\Рабочий стол\dump.txt'; # путь для дампа 
    1-ю строку стоит заменить на путь к интерпритатору
    Code:
    #!/usr/bin/perl 
    
    Поскольку имеет роль только статус-лайн:

    Code:
    sub ch{if($ua->head(@_[0])->as_string=~/200 OK/){return '[OK]';}
    elsif($ua->head(@_[0])->as_string=~/500/){return 'Bad connect...';}else{return'[BAD]';}}
    можно подправить :
    Code:
    ...$ua->head(@_[0])->status_line eq '200 OK'# можно и рег.выраж. использывать 
    еще много маленьких недочётов неохота их смотреть...

    Piflit
    Code:
    ppm install Tk
     
    2 people like this.
  9. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    оч.негативное впечатление .. совершенно не читаемый код .. -- нехватает мозга не читай а мне так писать нравится )

    поскольку написано под винду.. -- че сложно путь заменить куда будешь дампить??

    1-ю строку стоит заменить на путь к интерпритатору -- нахрена?? под активом они автоматом ассоциируются с ним при его установке

    $ua->head(@_[0])->status_line eq '200 OK' и
    $ua->head(@_[0])->as_string=~/200 OK/ - на два символа меньше - нафиг eq???

    PS поправил на 401 и там и там
     
    #9 genom--, 17 Feb 2008
    Last edited: 17 Feb 2008
  10. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> оч.негативное впечатление .. совершенно не читаемый код .. -- нехватает мозга не читай а мне так писать нравится )

    мне кста тоже "не хватает мозга" читать твои кодесы.. MO=Deparse тока помогает.. )
    этот кодес типа бывший priv8 from moa? +)
     
    1 person likes this.
  11. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    давай без оскорблений.я высказал свою критику .

    совсем неадекватный..
    Code:
    $ua->head(@_[0])->as_string=~/200 OK/ - на два символа меньше - нафиг eq???

    Code:
    as_string    -  в результате весь ответ 
    status_line  -  в результате HTTP статус-лайн   
    На 2 символа меньше , а трафика в сколько раз больше ?
    #пс я не буду дальше спорить..
     
    1 person likes this.
  12. FooBar

    FooBar Banned

    Joined:
    28 Jan 2008
    Messages:
    13
    Likes Received:
    6
    Reputations:
    -5
    demonoid посмотри снифером на сколько там меньше трафика, хотя можешь даже не утруждаться со снифером, выполни этот код и посмотри что будет

    use LWP::UserAgent;
    $ua = LWP::UserAgent->new();
    $req = $ua->head('http://snapshot.opera.com/unix/snapshot-1719/x86_64-linux/opera_9.50-20071213.2-shared-qt_amd64.deb')->status_line;
    print $req;

    а вот ответ сервера нам, как видим трафика столько же,
    разница только в том что окажется в переменной

    HEAD /unix/snapshot-1719/x86_64-linux/opera_9.50-20071213.2-shared-qt_amd64.deb HTTP/1.1

    Connection: close

    Host: snapshot.opera.com

    User-Agent: libwww-perl/5.805



    HTTP/1.1 200 OK

    Date: Sun, 17 Feb 2008 19:44:42 GMT

    Server: Apache/2.2.3 (Debian)

    Last-Modified: Fri, 14 Dec 2007 15:00:27 GMT

    ETag: "440006-64a4f2-52a378c0"

    Accept-Ranges: bytes

    Content-Length: 6595826

    Connection: close

    Content-Type: application/x-debian-package
     
    #12 FooBar, 17 Feb 2008
    Last edited: 17 Feb 2008
  13. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Я чего-то не понял... это откуда ты такой вывод сделал? Ответ получается полностью в любом случае, а указанные методы лишь извлекают нужную информацию из него.
     
  14. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    demonoid - ксурент совершенно прав я еще не забыл как он меня тыкнул в это лицом )))

    ps - да и думаю у нас не так много шеллов чтобы напрягаться из-за трафика
    ps - никого не оскорблял просто заепся сення -- дык мб резко вырахаюсь пожтому )
     
    #14 genom--, 17 Feb 2008
    Last edited: 18 Feb 2008
  15. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    короч добавил еще фичу - не многим наверное она понадобится - но мне надо вот и написал - короч внизу кода там по пиару идет расценовка шеллов в конец добаляется цена каждого и внизу выводится общая сумма за весь список

    закинул на сайт в подписи новую версию

    ой чуть не забыл жать кнопку ?$ на панели =)