Чаты chat.chiki-puki.ru - возможно ли сломать?

Discussion in 'Веб-уязвимости' started by artkino, 6 Mar 2006.

  1. artkino

    artkino New Member

    Joined:
    26 Feb 2006
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -2
    Вот интересно возможно ли сломать этот чат,
    чат самопальный))

    _http://chat.chiki-puki.ru/



    Этот чат работает в связке с службой знакомств
    и системой регистраций участников.
     
    #1 artkino, 6 Mar 2006
    Last edited by a moderator: 6 Mar 2006
  2. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Да чат очень мне понравился,кто писал респект ему, хотел бы тожа такой скрипт, уязвимостей не нашёл, проверял 15 мин.
     
  3. artkino

    artkino New Member

    Joined:
    26 Feb 2006
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -2
    Этот чат стоит 15тыс рублей всего лишь.
     
  4. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Ты прям так сказал как будто мало )))), но скрипт мошний , если бы подорили взял бы )))
     
  5. Nova

    Nova Green member

    Joined:
    15 Jul 2005
    Messages:
    1,233
    Likes Received:
    420
    Reputations:
    280
    Я бы тоже взял если бы подарили но блин никто не дарит.......
     
    _________________________
  6. artkino

    artkino New Member

    Joined:
    26 Feb 2006
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -2
    Не ну если чатом заниматься то это мало, а если такие деньги кажуться большими то чатом нет смысла заниматься.
     
  7. Антошка2003

    Антошка2003 Elder - Старейшина

    Joined:
    3 Apr 2005
    Messages:
    534
    Likes Received:
    66
    Reputations:
    49
    невидимый символ прошёл, но толку от него нету. больше тоже ничего не нашёл
     
  8. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,160
    Likes Received:
    299
    Reputations:
    156
    А что мешает попробовать исходники выпросить у Админа? Некоторые соглашаются...
     
    _________________________
  9. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    А нечаянно забрать интереснее=)))
    щас попробую похимичить...

    админ рулит!
    кстати, невидимый символ не катит(может админ реально рулить?)
     
    #9 DRON-ANARCHY, 6 Mar 2006
    Last edited: 6 Mar 2006
  10. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Можит и так , но чат мне очень понравился.
     
  11. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Кстати, в этом чате слишком дохера исходников валяются прямо в самих фреймах.
     
  12. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Прикиньте, а я там под ником admin тусю=)))
     
  13. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Если не трудна, Дрон выложи сылку , я посмотрю ото что-то найти немогу.
     
  14. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    На что выложить ссылку? на исходники? они в самой странице лежат закомментированные...
     
  15. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Давай блин )))) я хочу протестировать на локалхосте его )))) жду. Если не хочеш кидай в ПМ или я на канале ИРС.
     
  16. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Ды ты не так понял! Там тока какая-то не совсем значительная часть! там нефик тестить!=))
    Зайди в чат и посмотри исходник странцы..может и нароешь чего интересного...
    я вот че знаю..
    с этим мона поковыряться..
     
  17. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Низнаю только у меня , или нет но страничка и чат уже не грузятся (
     
  18. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    посмотри вот это _http://chat.chiki-puki.ru:8080/?ax=10369656 , очень интересно, мне так кажется тама и приваты видны, только просматривать исходны ХТМЛ код.
     
  19. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head><META NAME="ROBOTS" CONTENT="noindex">
    <title>Чат - Chiki-Puki.Ru</title>
    <meta http-equiv="Content-Type" content="text/html; CHARSET=Windows-1251">
    <meta name="Description" content="На всю катушку развлекательный портал!">
    <link rel="stylesheet" type="text/css" href="http://chiki-puki.ru/chiki-puki.css">
    <STYLE TYPE="text/css"><!--
    .c_win{border: #BFEB32 1px solid; padding: 4px;}
    .c_sysmsg{color: 808080; border: #FFFFFF 0px solid; width:100%; FONT-SIZE: 11px;}
    .c_privn{text-align: center; border: #BFEB32 1px solid; background: #ECFFAE; width:100;}
    .c_selclr{width:30%; FONT-SIZE: 11px;}
    .c_selcanal{FONT-SIZE: 11px;}
    .c_inptxt{width:100%;}
    --></style>
    
    <script language=JavaScript><!--
    // Чат система "Чики-Пуки.Ру!" версия 2.2
    // by HOD.RU
    
    allcolor = new Array("#000000", "#7F0000", "#7F6000", "#7F7F00", "#207F00", "#007F7F", "#00607F", "#00207F", "#60007F", "#7F007F", "#DD0000", "#FF8000", "#00BB00", "#00BBBB", "#0099EE", "#0000FF", "#BB00EE", "#FF00FF");
    allcanal = new Array();
    allcanal[0]="Все каналы"; allcanal[41]="Абакан"; allcanal[20]="Архангельск"; allcanal[25]="Астрахань"; allcanal[38]="Балабаново"; allcanal[30]="Барнаул"; allcanal[81]="Белёв"; allcanal[45]="Белгород"; allcanal[78]="Бийск"; allcanal[68]="Борисоглебск"; allcanal[70]="Брянск"; allcanal[37]="Великий Новгород"; allcanal[8]="Владивосток"; allcanal[79]="Владимир"; allcanal[14]="Волгоград"; allcanal[91]="Волгодонск"; allcanal[24]="Воркута"; allcanal[36]="Гатчина"; allcanal[80]="Донецк"; allcanal[12]="Дюртюли"; allcanal[72]="Ейск"; allcanal[4]="Екатеринбург"; allcanal[61]="Елец"; allcanal[62]="Иваново"; allcanal[58]="Иркутск"; allcanal[84]="Йошкар-Ола"; allcanal[7]="Казань"; allcanal[21]="Калининград"; allcanal[66]="Кандагач"; allcanal[57]="Караганда"; allcanal[48]="Кемерово"; allcanal[11]="Киев"; allcanal[33]="Киров"; allcanal[51]="Кисловодск"; allcanal[87]="Кострома"; allcanal[6]="Краснодар"; allcanal[46]="Красноярск"; allcanal[82]="Курск"; allcanal[47]="Липецк"; allcanal[83]="Львов"; allcanal[10]="Минск"; allcanal[34]="Мирный"; allcanal[1]="Москва"; allcanal[73]="Мурманск"; allcanal[60]="Нижневартовск"; allcanal[23]="Нижнекамск"; allcanal[17]="Нижний Новгород"; allcanal[55]="Новороссийск"; allcanal[3]="Новосибирск"; allcanal[35]="Новый Уренгой"; allcanal[52]="Норильск"; allcanal[43]="Нягань"; allcanal[59]="Обнинск"; allcanal[75]="Одесса"; allcanal[39]="Омск"; allcanal[54]="Орёл"; allcanal[89]="Оренбург"; allcanal[92]="Орехово-Зуево"; allcanal[15]="Пенза"; allcanal[50]="Пермь"; allcanal[26]="Пятигорск"; allcanal[5]="Ростов на Дону"; allcanal[63]="Рязань"; allcanal[2]="С-Петербург"; allcanal[13]="Самара"; allcanal[85]="Саранск"; allcanal[90]="Саров"; allcanal[49]="Симферополь"; allcanal[18]="Смоленск"; allcanal[29]="Соликамск"; allcanal[16]="Сочи"; allcanal[88]="Ставрополь"; allcanal[44]="Сургут"; allcanal[42]="Сыктывкар"; allcanal[71]="Таганрог"; allcanal[53]="Таллинн"; allcanal[67]="Тараз"; allcanal[77]="Ташкент"; allcanal[64]="Тихорецк"; allcanal[74]="Тольятти"; allcanal[31]="Томск"; allcanal[9]="Тула"; allcanal[19]="Тюмень"; allcanal[65]="Улан-Удэ"; allcanal[32]="Уфа"; allcanal[22]="Хабаровск"; allcanal[69]="Ханты-Мансийск"; allcanal[86]="Харьков"; allcanal[76]="Чебоксары"; allcanal[56]="Челябинск"; allcanal[28]="Южно-Сахалинск"; allcanal[40]="Якутск"; allcanal[27]="Ярославль"; 
    // var temp1='';
    // var temp2='';
    // var temp3='';
    // tempm1=new Array();
    // tempm2=new Array();
    var myID=12420;
    var myNICK="admin";
    var mySTATUS=0;
    var myVISIT=0;
    var allPERSON=0;
    Nicks = new Array();
    var y_for_foto=0;
    var zagolowokzz=0;
    var myAXN=0;
    var myNCOLOR=0;
    var myTCOLOR=0;
    var myCANAL=0;
    var mySWMSG=0;
    var myAREACT=0;
    var myMREACT=1;
    var myPREACT=2;
    var mySCROLLon=1;
    var mySMILEon=1;
    var mySELMYMSGon=0;
    var myTRANSLITon=0;
    var oldKEYCODE=0;
    var flag_getfocus=0;
    var flag_zchhist=0;
    var flag_addtmultinick=1;
    var flag_wantwinfocus=0;
    var flag_seccngstat=0;
    var flag_seccngstattm=1;
    var flag_tosetstat='';
    var flag_secinlastmsg=0;
    var flag_msgrecordspeed=0;
    var flag_nookquit=1;
    MyMessages = new Array();
    var MyNumMessages=0;
    var zxcSMB = ' !Э№;%?э()*+б-ю.0123456789ЖжБ=Ю,"ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯх/ъ:_ёфисвуапршолдьтщзйкыегмцчняХ\ЪЁ';
    engSMB = new Array(/E'/g, /CH/g, /SH/g, /YO/g, /JO/g, /ZH/g, /YU/g, /JU/g, /YA/g, /JA/g, /A/g, /B/g, /V/g, /G/g, /D/g, /E/g, /Z/g, /I/g, /J/g, /K/g, /L/g, /M/g, /N/g, /O/g, /P/g, /R/g, /S/g, /T/g, /U/g, /F/g, /H/g, /C/g, /W/g, /~/g, /Y/g, /'/g, /e'/g, /ch/g, /sh/g, /yo/g, /jo/g, /zh/g, /yu/g, /ju/g, /ya/g, /ja/g, /a/g, /b/g, /v/g, /g/g, /d/g, /e/g, /z/g, /i/g, /j/g, /k/g, /l/g, /m/g, /n/g, /o/g, /p/g, /r/g, /s/g, /t/g, /u/g, /f/g, /h/g, /c/g, /w/g, /~/g, /y/g, /'/g);
    rusSMB = new Array("Э", "Ч", "Ш", "Ё", "Ё", "Ж", "Ю", "Ю", "Я", "Я", "А", "Б", "В", "Г", "Д", "Е", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Щ", "Ъ", "Ы", "Ь", "э", "ч", "ш", "ё", "ё","ж", "ю", "ю", "я", "я", "а", "б", "в", "г", "д", "е", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "щ", "ъ", "ы", "ь");
    tospaceSMB = new Array(/!/g, /\?/g, /'/g, /"/g, /,/g, /\./g, /-/g, / /g, /–/g, /—/g);
    
    // --- ST--- ЗАГРУЗКА, ПЕРЕЗАГРУЗКА, ОТКРЫТИЕ ОКОН ---------------------
    function closegwin(){
    if (flag_nookquit){
    wcgw=window.open("about:blank", "cgw", "width=300,height=100,status=yes,toolbar=no,menubar=no,directories=no,location=no,resizable=no,scrollbars=no,alwaysraised=yes");
    wcgw.document.write("<HT"+"ML><HE"+"AD><TI"+"TLE>выход из чата</ti"+"tle><META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'><ST"+"YLE TYPE='text/css'><!-"+"-\nTD{color: #FF0000; font: bold 13px/15px arial ;}\n--"+"></st"+"yle></he"+"ad><BO"+"DY BGCOLOR='#FFFFFF' TEXT='#000000'><ta"+"ble width='100%' height='100%' border=0 cellspacing=0 cellpadding=0><tr><td align=center>В следующий раз используйте<BR>кнопку ВЫХОД в чате...</td></tr></ta"+"ble><fo"+"rm name='x' action='http://chat.chiki-puki.ru/cgi-bin/cs.cgi' method='post'><input type=hidden name='t' value='/quit closing_chat_window'></fo"+"rm><sc"+"ript>document.x.submit();</sc"+"ript></bo"+"dy></ht"+"ml>");
    }}
    
    function endct(mmod, txt){
    // mmod = 0 ошибка систем
    // mmod = 1 неправильные контрольные данные из кукиесов (пароль, id или ещё что-то)
    // mmod = 2 ошибка чат системы
    flag_nookquit=0;
    window.location="http://chat.chiki-puki.ru/cgi-bin/chat.cgi?m="+mmod;
    } // function endct()
    
    function exitx(){
    flag_nookquit=0;
    window.location="http://love.chiki-puki.ru/";
    } // function exitx()
    
    function adbs(nid){
    if (nid >0){
    myWin=window.open("http://chat.chiki-puki.ru/cgi-bin/bm.cgi?u="+nid, "bansystem", "width=400,height=350,status=yes,toolbar=no,menubar=no,directories=no,location=no,resizable=no,scrollbars=yes,alwaysraised=yes");
    }
    return false;
    } // function adbs()
    
    function adbl(){
    myWin=window.open("http://chat.chiki-puki.ru/cgi-bin/bm.cgi?x=1", "bansystem", "width=600,height=350,status=yes,toolbar=no,menubar=no,directories=no,location=no,resizable=no,scrollbars=yes,alwaysraised=yes");
    return false;
    } // function adbl()
    
    function adstp(){
    myWin=window.open("http://chat.chiki-puki.ru/cgi-bin/bm.cgi?x=2", "bansystem", "width=400,height=350,status=yes,toolbar=no,menubar=no,directories=no,location=no,resizable=no,scrollbars=yes,alwaysraised=yes");
    return false;
    } // function adstp()
    
    function getanket(nid){
    flag_addtmultinick=0;
    if (nid >0){
    myaWin=window.open("http://chiki-puki.ru/cgi-bin/person.cgi?x=3&u="+nid, "anket");
    }
    return false;
    } // function getanket()
    
    function smpan(){
    flag_addtmultinick=0;
    myWin=window.open("http://chat.chiki-puki.ru/s_stat.htm", "smilepanel", "width=400,height=400,status=yes,toolbar=no,menubar=no,directories=no,location=no,resizable=no,scrollbars=yes,alwaysraised=yes");
    return false;
    } // function smpan()
    
    function abch(){
    myWin=window.open("http://chat.chiki-puki.ru/abc.htm", "helppanel", "width=600,height=500,status=yes,toolbar=no,menubar=no,directories=no,location=no,resizable=no,scrollbars=yes,alwaysraised=yes");
    return false;
    } // function abch()
    
    function quitz(){
    document.cld.t.value="/quit";
    document.cld.submit();
    return false;
    } // function quitz()
    
    function zabawa(){
    window.alert("Вы плохо вели себя, и приговорены к исправительным работам!\nСейчас вам потребуется 10 раз правильно ответить на вопросы.\nЧто бы не вылететь из чата, ответить нужно не больше чем за 5 минут!");
    // для хакеров всегда надо оставлять лазейки, что бы они могли обходить всякие мелкие гадости уготованные для них, делая свою жизнь чуточку удобнее ;) Серьёзно сломать чат у вас вряд-ли получиться, а оградить себя от всяких функций типа zabawa() это запросто. Если что интересное в коде найдёте - можете отписать, обсудим (мой ник на сервере wRUN).
    for (var n=0; n<10; n++){
    var temp2=Math.random()*100;
    var temp1=10-n;
    if (temp2 >50){
    if (window.confirm("Впредь вы будете вести себя в чате хорошо и по правилам?\nЕсли вы ответите не верно, то всё начнётся сначала.\nОсталось ещё "+temp1+" раз ответить.")){temp2=0;}else{n=0;}
    }else{
    if (window.confirm("Вы будете нарушать правила чата и делать непотребщину?\nЕсли вы ответите не верно, то всё начнётся сначала.\nОсталось ещё "+temp1+" раз ответить.")){n=0;}else{temp2=0;}
    }}
    top.document.cio.txt.focus();
    } // function zabawa()
    // --- EN--- ЗАГРУЗКА, ПЕРЕЗАГРУЗКА, ОТКРЫТИЕ ОКОН ---------------------
    
    
    
    // --- ST--- СЛУЖЕБНЫЕ ФУНКЦИИ ВРОДЕ say(), PlaySnd() ... ---------------------
    function PlaySnd(){
    if (navigator.appName.indexOf ("Microsoft") !=-1){
    if (window.cct["snd"].PercentLoaded() ==100 && !window.cct["snd"].IsPlaying()){
    window.cct["snd"].TGotoLabel('/', 'allsnd');
    window.cct["snd"].play();
    }
    }else{
    if (document.cct["snd"].PercentLoaded() ==100 && !window.cct["snd"].IsPlaying()){
    document.cct["snd"].TGotoLabel('/', 'allsnd');
    document.cct["snd"].play();
    }}
    } // function PlaySnd()
    
    function zxcvtorus(txt){
    if (txt){
    var temp1='';
    for (izxc=0; izxc < txt.length; izxc++){
    var temp2 = txt.charAt(izxc).charCodeAt();
    temp1 += temp2 < 0x80 ? zxcSMB.charAt(temp2-0x20) : txt.charAt(izxc);
    }
    return temp1;
    }} // function zxcvtorus()
    
    function translit(txt){
    if (txt){for (nft=0; nft<engSMB.length; nft++){txt=txt.replace(engSMB[nft],rusSMB[nft]);}}
    return txt;
    } // function translit()
    
    
    function txtkeypress(){
    flag_wantwinfocus=0;
    flag_addtmultinick=0;
    eventkeycod=window.event.keyCode;
    if (eventkeycod==38){
    if (flag_zchhist){
    if (MyMessages.length >0){
    document.cio.txt.value=MyMessages[MyNumMessages];
    if (MyNumMessages < (MyMessages.length-1)){MyNumMessages++;}
    }}
    flag_zchhist=1;
    oldKEYCODE=eventkeycod;
    return;
    }
    if (eventkeycod==40){
    if (flag_zchhist){
    if (MyMessages.length >0){
    if (MyNumMessages > 0){MyNumMessages--;}
    document.cio.txt.value=MyMessages[MyNumMessages];
    if (MyNumMessages ==0){MyNumMessages=1;}
    }}
    flag_zchhist=1;
    oldKEYCODE=eventkeycod;
    return;
    }
    flag_zchhist=0;
    if (oldKEYCODE==17 && eventkeycod==192){
    var txt=document.cio.txt.value;
    if (txt){
    var temp2=txt.substring(0, 20);
    var tempm1=temp2.split(" -");
    var temp1=tempm1[0];
    var temp2=0;
    if (temp1.length > 2 && tempm1.length >1){for (var n=0; (n<Nicks.length && temp2==0); n++){tempm1=Nicks[n].split("\t"); if (tempm1[0] ==temp1){temp2=1;}}}
    if (temp2){
    temp1=temp1+" - ";
    txt=zxcvtorus(txt.substring(temp1.length, 1024));
    document.cio.txt.value=temp1+txt;
    }else{
    document.cio.txt.value=zxcvtorus(txt);
    }
    }
    oldKEYCODE=eventkeycod;
    return;
    }
    oldKEYCODE=eventkeycod;
    } // function txtkeypress()
    
    function fokusator(){
    flag_wantwinfocus=0;
    setTimeout("flag_wantwinfocus=0;",50);
    } // fokusator()
    function defokusator(){
    flag_wantwinfocus=1;
    } // defokusator()
    
    function say(){
    txt=document.cio.txt.value;
    if (txt){
    var temp1=new Date();
    temp1=temp1.getTime();
    var temp2=(temp1-flag_secinlastmsg)/txt.length;
    if (temp2 < 50){
    flag_msgrecordspeed++;
    if (flag_msgrecordspeed >2){
    window.alert("Хватит отправлять в чат ересь!\n-------------------------------------------------------------------------------------\nПочему ересь?\nПотому, что со скоростью выше 20 символов\nв секунду невозможно печатать разумный текст.\n-------------------------------------------------------------------------------------");
    temp1=new Date();
    flag_secinlastmsg=temp1.getTime();
    document.cio.txt.focus();
    return;
    }
    }else{flag_msgrecordspeed=0;}
    flag_secinlastmsg=temp1;
    
    temp1=document.cct.nc.value; temp1++;
    temp2=document.cct.tc.value; temp2++;
    if (myNCOLOR !=temp1){document.cld.q.value=temp1; myNCOLOR=temp1;}
    if (myTCOLOR !=temp2){document.cld.w.value=temp2; myTCOLOR=temp2;}
    tmm=MyMessages;
    MyMessages = new Array(txt);
    for (var n=0; (n<10 && n<tmm.length); n++){MyMessages[n+1]=tmm[n];}
    MyNumMessages=0;
    temp2=txt.substring(0, 20);
    var tempm1=temp2.split(" -");
    temp1=tempm1[0];
    temp2=0;
    if (temp1.length > 2 && tempm1.length >1){for (var n=0; (n<Nicks.length && temp2==0); n++){tempm1=Nicks[n].split("\t"); if (tempm1[0] ==temp1){temp2=1;}}}
    if (temp2){
    temp1=temp1+" - ";
    document.cio.txt.value=temp1;
    if (myTRANSLITon){txt=temp1+translit(txt.substring(temp1.length, 1024));}
    }else{
    document.cio.txt.value="";
    if (myTRANSLITon){txt=translit(txt);}
    }
    } // if (txt)
    document.cct.cn.disabled=true;
    flag_addtmultinick=0;
    document.cld.t.value=txt;
    document.cld.submit();
    document.cio.txt.focus();
    } // function say()
    
    function settichange(){
    myAREACT=top.frames["chn"].document.setti.reaa.value;
    myMREACT=top.frames["chn"].document.setti.ream.value;
    myPREACT=top.frames["chn"].document.setti.reap.value;
    mySCROLLon=top.frames["chn"].document.setti.scrlchp.checked;
    mySMILEon=top.frames["chn"].document.setti.onsml.checked;
    mySELMYMSGon=top.frames["chn"].document.setti.onselmy.checked;
    myTRANSLITon=top.frames["chn"].document.setti.transl.checked;
    } // function settichange()
    
    function settichangeswmsg(){
    mySWMSG=top.frames["chn"].document.setti.swmsg.value;
    var temp1='---------- <b>включен показ всех сообщений в чате</b>';
    if (mySWMSG ==1){temp1='---------- <b>будут показаны только приват и сообщения где упомянули ваш ник</b>';}
    if (mySWMSG ==2){temp1='---------- <b>будут показаны только личные сообщения для вас только приват</b>';}
    var temp2=new Date();
    temp2=temp2.toLocaleString();
    top.frames["chp"].document.write("<div class='sysm'>"+temp1+" ("+temp2+") ---</div>\n");
    if (mySCROLLon){top.frames["chp"].scroll(1,1000001);}
    y_for_foto=top.frames["chp"].document.body.scrollTop;
    top.frames["chp"].document.all["mf"].style.top=y_for_foto;
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    } // function settichangeswmsg()
    
    
    function realchangestat(){
    var temp3=new Date();
    temp3=temp3.getTime();
    if (flag_seccngstat < temp3){
    document.cld.t.value="/status"+flag_tosetstat;
    document.cld.submit();
    flag_seccngstat=temp3+3000;
    flag_seccngstattm=1;
    }else{if (flag_seccngstattm){setTimeout("top.realchangestat();",3500); flag_seccngstattm=0;}}
    } // realchangestat()
    function settichangesstat(){
    var temp1=top.frames["chn"].document.setti.sstat.value;
    var temp2="";
    if (temp1 ==1){temp2=" -• скоро буду •";}
    if (temp1 ==2){temp2=" -• работаю •";}
    if (temp1 ==3){temp2=" =• в привате •";}
    if (temp1 ==4){temp2=" +загрузило :(";}
    if (temp1 ==5){temp2=" *познакомлюсь *";}
    if (temp1 ==6){temp2=" *хочу любви *";}
    if (temp1 ==7){temp2=" +уже люблю :)";}
    if (temp1 ==8){
    document.cio.txt.value="/status напиши свой";
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    return;
    }
    if (temp1 ==9){
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    return;
    }
    flag_tosetstat=temp2;
    realchangestat();
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    return;
    } // function settichangesstat()
    
    function canalchange(){
    testchpok();
    var temp1=document.cct.cn.value; temp1++; temp1--;
    if (myCANAL != temp1){
    var temp3="*** Вы выбрали приём сообщений из <b>всех</b> доступных каналов. Сейчас вы принимаете все сообщения чата.";
    if (temp1 >0){
    var temp2=document.cct.cn.selectedIndex;
    temp2=document.cct.cn.options[temp2].text;
    temp3="*** Выбран канал &quot;<b>"+temp2+"</b>&quot;. Сейчас вы принимаете все сообщения из этого канала и сообщения с других каналов, которые либо написаны вам лично, либо в которых упомянут ваш ник.";
    }
    top.frames["chp"].document.write("<div class='sysm'>"+temp3+"</div>\n");
    if (mySCROLLon){top.frames["chp"].scroll(1,1000001);}
    y_for_foto=top.frames["chp"].document.body.scrollTop;
    top.frames["chp"].document.all["mf"].style.top=y_for_foto;
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    document.cct.cn.disabled=true;
    document.cld.t.value="";
    temp1++; document.cld.c.value=temp1;
    flag_addtmultinick=0;
    document.cld.submit();
    } // if (myCANAL != temp1)
    
    // nwchn(myID, temp1);
    // printnick();
    } // canalchange()
    
    
    function reconn(){
    myAXN++;
    top.frames["chl"].location="http://chat.chiki-puki.ru:8080/?ax=10369990q"+myAXN;
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    return false;
    } // function reconn()
    
    function clearchp(){
    top.frames["chp"].location="about:blank";
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    return false;
    } // function reconn()
    
    function okread_offm(idom){
    document.cld.t.value="/okom "+idom; // id мессаги младше которого все мессаги подтверждаются (что бы подтвердить все: /okom all)
    document.cld.submit();
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    return false;
    } // function okread_offm()
    
    // --- EN--- СЛУЖЕБНЫЕ ФУНКЦИИ ВРОДЕ say(), PlaySnd() ... ---------------------
    
    
    
     
  20. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Code:
    // --- ST--- ФУНКЦИИ ВСТАВКИ НИКА В ТЕКСТ И ИЖЕ СНИМ ---------------------
    function nick_totext(nid, ntx){
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    if (ntx && nid != myID){
    var temp1=document.cio.txt.value;
    var temp2=temp1.substring(0, 20);
    var tempm1=temp2.split(" -");
    if (tempm1[0].length > 2 && tempm1[0].length < 17 && tempm1.length >1){
    temp1=temp1.substring((tempm1[0].length+3));
    }else{flag_addtmultinick=0;}
    if (flag_addtmultinick){
    document.cio.txt.value=ntx+", "+document.cio.txt.value;
    }else{
    document.cio.txt.value=ntx+" - "+temp1;
    }
    flag_addtmultinick=1;
    // off privat
    document.cld.l.value="";
    document.cio.pn.value="";
    }
    return false;
    } // function nick_totext()
    
    function privat_on(nid, ntx){
    flag_addtmultinick=0;
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    if (nid >0 && nid != myID){
    document.cld.l.value=nid;
    document.cio.pn.value=ntx;
    var temp1=document.cio.txt.value;
    var temp2=temp1.substring(0, 20);
    var tempm1=temp2.split(" -");
    if (tempm1[0].length > 2 && tempm1.length >1){
    temp1=temp1.substring((tempm1[0].length+3));
    document.cio.txt.value=temp1;
    }
    }
    return false;
    } // function privat_on()
    
    function privat_off(){
    flag_addtmultinick=0;
    setTimeout("top.document.cio.txt.focus();",40); // flag_getfocus=1;
    document.cld.l.value="";
    document.cio.pn.value="";
    } // function privat_off()
    // --- ST--- ФУНКЦИИ ВСТАВКИ НИКА В ТЕКСТ И ИЖЕ СНИМ ---------------------
    
    
    
    
    
    // --- ST--- СМАЙЛ-ПАРСЕР ---------------------
    // пожалуй лучший смайл-парсер :)
    // не жрёт трафик, так как тег img вставляется только у клиента а не передаётся через сеть + быстро парсит хоть 1000 смайлов в сообщении
    // (c) Смайл парсер бу - "wRUN" / Chiki-Puki.Ru
    var maxsmilesonmsg=20; // и тем не менее можно ограничить кол-во смайлов в сообщении
    
    smiles=new Array(":)", "da.gif", ":(", "be.gif", ";)", "hu.gif", ";(", "di.gif", ":|", "av.gif", ":D", "br.gif", ":O", "bk.gif", ":О", "bk.gif", "8)", "ea.gif", "8(", "fa.gif");
    function smileprs(a){
    w=0;
    b='';
    c=a.length;
    a=a+" ";
    for (d=0; d<c; d++){
    e=a.charAt(d);
    if (w < maxsmilesonmsg){
    g=e;
    if (e==':' || e==';' || e=='8'){
    if (a.charAt(d+2) ==" "){
    d++; e=e+a.charAt(d);
    for (f=0; f<smiles.length; f=f+2){if (smiles[f]==e){e="<img src='http://chat.chiki-puki.ru/smiles/"+smiles[f+1]+"' width=15 height=15 border=0 style='position:relative; top:2;' alt='"+e+"'>"; w++; f=999;}}
    }else{
    if (g==':'){
    if (a.charAt(d+3) ==':'){
    h=a.charCodeAt(d+1);
    if (h >96 && h<123){
    i=a.charCodeAt(d+2);
    if (i >96 && i<123){
    if (!(h >116 && i >111)){
    d++;
    h=a.charAt(d); d++;
    h=h+a.charAt(d); d++;
    e="<img src='http://chat.chiki-puki.ru/smiles/"+h+".gif' border=0 style='position:relative; top:2;' ALT=':"+h+":'>"; w++;
    }}}}}
    }
    }
    } // if (w < maxsmilesonmsg)
    b=b+e;
    }
    return b;
    } // function smileprs()
    // --- EN--- СМАЙЛ-ПАРСЕР ---------------------
    
    // --- ST--- ФУНКЦИИ СВЯЗАННЫЕ С ВРЕМЕНЕМ (ТАЙМЕРОМ) ---------------------
    
    var TimeLastReload=0;
    var flag_Errorconnect=0;
    var ststrokazz=0;
    var ststrokatchk=")";
    var ststrokatchknum=0;
    var MaxTimeCheckConnect=30*2; // 30 сек (2 раза в сек работает таймер)
    var MaxTimeLastReload=300*2; // 5 минут (2 раза в сек работает таймер)
    var MaxTimeNoconnect=600*2; // 10 минут (2 раза в сек работает таймер)
    
    var triggerbegzagolowka=0;
    function begzagolowka(){
    zagolowokzz--;
    if (zagolowokzz ==9){if (flag_wantwinfocus){window.focus();}}
    if (zagolowokzz ==0){top.document.title="Чат - Chiki-Puki.Ru"; return;}
    if (triggerbegzagolowka){triggerbegzagolowka=0; top.document.title="[email protected][email protected].@";}else{triggerbegzagolowka=1; top.document.title="@[email protected][email protected].";}
    } // function begzagolowka()
    
    
    function miganiestatstroki(){
    if (ststrokazz ==1){
    ststrokazz=0;
    document.cct.c.style.background="#FFFFFF";
    }else{
    ststrokazz=1;
    document.cct.c.style.background="#FFF2E2";
    }
    ststrokatchknum++;
    if (ststrokatchknum >3){ststrokatchk=")"; ststrokatchknum=0;}else{ststrokatchk=ststrokatchk+")";}
    document.cct.c.value="Связь с чат-сервером потеряна... Пытаюсь восстановить связь. +"+ststrokatchk;
    } // function miganiestatstroki()
    
    
    function GlawTimer(){
    if (zagolowokzz > 0){begzagolowka();}
    TimeLastReload++;
    if (TimeLastReload > MaxTimeLastReload){
    if (flag_Errorconnect !=1){
    flag_Errorconnect=1;
    myAXN++;
    top.frames["chl"].location="http://chat.chiki-puki.ru:8080/?ax=10369990q"+myAXN;
    document.cct.c.value="Связь с чат-сервером потеряна... Пытаюсь восстановить связь.";
    }else{
    if (TimeLastReload > MaxTimeNoconnect){okld(); top.document.cer.submit();}
    }
    }else{
    if (TimeLastReload > MaxTimeCheckConnect){
    flag_Errorconnect=2;
    document.cct.c.style.background="#FFF2E2";
    document.cct.c.value=myNICK+"!!! Обнаружены перебои с связью... Ожидаю восстановления ("+Math.floor(MaxTimeLastReload-TimeLastReload)+").";
    }else{
    var temp1="";
    if (myVISIT >0){temp1=" это твой "+myVISIT+" визит,";}
    document.cct.c.value="В чате "+allPERSON+" персон, ты под ником «"+myNICK+"»,"+temp1+" проверка связи "+Math.floor(TimeLastReload/2)+" сек. назад.";
    }
    }
    
    if (flag_Errorconnect ==1){miganiestatstroki();}
    
    
    setTimeout("GlawTimer()",500);
    } // function GlawTimer()
    
    // --- EN--- ФУНКЦИИ СВЯЗАННЫЕ С ВРЕМЕНЕМ (ТАЙМЕРОМ) ---------------------
    
    
    
    // --- ST--- ФУНКЦИИ СЛУЖЕБНЫЕ, ВЫЗЫВАЕМЫЕ ЧАТ-СЕРВЕРОМ ---------------------
    function okld(){
    if (flag_Errorconnect !=0){
    flag_Errorconnect=0;
    ststrokazz=0;
    document.cct.c.style.background="#FFFFFF";
    }
    ststrokatchknum=0;
    ststrokatchk=")";
    TimeLastReload=0;
    } // function okld()
    
    function oksy(){
    document.cld.c.value="";
    document.cld.q.value="";
    document.cld.w.value="";
    document.cct.cn.disabled=false;
    } // function oksy()
    
    // --- X функции контроля мозга которые может вызвать чат-сервер ------------
    
    function x_translit(mmod){              // транслит 0=off | 1=on
    if (mmod ==1){
    myTRANSLITon=1;
    top.frames["chn"].document.setti.transl.checked=true;
    }else{
    myTRANSLITon=0;
    top.frames["chn"].document.setti.transl.checked=false;
    }} // function x_translit()
    
    function x_reactmy(mmod){               // рекация на сообщения мне 0=никакой | 1=заголовком | 2=звуком
    myMREACT=mmod;
    top.frames["chn"].document.setti.ream.selectedIndex=mmod;
    } // function x_reactmy()
    function x_reactpr(mmod){               // рекация на сообщения привата 0=никакой | 1=заголовком | 2=звуком
    myPREACT=mmod;
    top.frames["chn"].document.setti.reap.selectedIndex=mmod;
    } // function x_reactpr()
    function x_reactal(mmod){               // рекация на сообщения прочие 0=никакой | 1=заголовком | 2=звуком
    myAREACT=mmod;
    top.frames["chn"].document.setti.reaa.selectedIndex=mmod;
    } // function x_reactal()
    
    function x_txtbgcolor(txt){             // сменить цвет фона окна с текстом чата
    top.frames["chp"].document.bgColor=txt;
    } // function x_txtbgcolor()
    function x_alert(txt){                  // выдать окно с текстом и кнопкой OK
    window.alert(txt);
    } // function x_alert()
    function x_callurl(txt, mmod){          // 0=открыть в новом, фоново | 1=открыть в текущем
    if (txt){
    var temp1="_blank";
    if (mmod ==1){temp1="_top";}
    myxWin=window.open(txt, temp1);
    if (mmod ==0){setTimeout("top.document.cio.txt.focus();",40);}
    }} // function x_callurl()
    
    // --- EN--- ФУНКЦИИ СЛУЖЕБНЫЕ, ВЫЗЫВАЕМЫЕ ЧАТ-СЕРВЕРОМ ---------------------
    
    
    // --- ST--- ФУНКЦИИ ДОБАВЛЕНИЯ И ОБНОВЛЕНИЯ СПИСКА НИКОВ ---------------------
    
    // Массив ников:
    // ник, ид_ника, время_входа, пол, канал описание_ника, рег_ид, кол-во_фото,  фото_ид, статус
    //  0      1        2          3     4       5              6       7           8        9
    
    function clrn(){
    Nicks=new Array();
    } // function clrn()
    
    
    // Добавляет ник
    function addn(nid, nick, regid, pol, canal, nickdesc, entertime, stat, numfoto, fotoid){
    if (nid >0 && nick){
    var temp1=Nicks.length;
    fn=1;
    for (var n=0; (n<Nicks.length && fn==1); n++){
    var tempm1=Nicks[n].split("\t");
    if (tempm1[1] ==nid){temp1=n; fn=0;}
    }
    Nicks[temp1]=nick+"\t"+nid+"\t"+entertime+"\t"+pol+"\t"+canal+"\t"+nickdesc+"\t"+regid+"\t"+numfoto+"\t"+fotoid+"\t"+stat;
    Nicks.sort();
    printnick();
    }} // function addn()
    
    function deln(nid){
    if (nid >0){
    var tempm2=new Array();
    var temp1=0;
    for (var n=0; n<Nicks.length; n++){
    tempm1=Nicks[n].split("\t");
    if (tempm1[1] !=nid){tempm2[temp1]=Nicks[n]; temp1++;}
    }
    Nicks=tempm2;
    Nicks.sort();
    printnick();
    }} // function deln()
    
    // Обновляет статус ника
    function nwsn(nid, stat){
    if (nid >0){
    fn=1;
    for (var n=0; (n<Nicks.length && fn==1); n++){
    var tempm1=Nicks[n].split("\t");
    if (tempm1[1] ==nid){
    fn=0; Nicks[n]=tempm1[0]+"\t"+tempm1[1]+"\t"+tempm1[2]+"\t"+tempm1[3]+"\t"+tempm1[4]+"\t"+tempm1[5]+"\t"+tempm1[6]+"\t"+tempm1[7]+"\t"+tempm1[8]+"\t"+stat;
    }}
    Nicks.sort();
    printnick();
    }} // function nwsn()
    
    // Обновляет имя (ник)
    function nwnn(nid, nick){
    if (nid >0){
    fn=1;
    for (var n=0; (n<Nicks.length && fn==1); n++){
    var tempm1=Nicks[n].split("\t");
    if (tempm1[1] ==nid){
    fn=0;
    Nicks[n]=nick+"\t"+tempm1[1]+"\t"+tempm1[2]+"\t"+tempm1[3]+"\t"+tempm1[4]+"\t"+tempm1[5]+"\t"+tempm1[6]+"\t"+tempm1[7]+"\t"+tempm1[8]+"\t"+tempm1[9];
    myNICK=nick;
    }}
    Nicks.sort();
    printnick();
    }} // function nwnn()
    
    
    // Обновляет канал ника
    function nwchn(nid, canal){
    if (nid >0){
    if (nid ==myID){myCANAL=canal;}
    fn=1;
    for (var n=0; (n<Nicks.length && fn==1); n++){
    var tempm1=Nicks[n].split("\t");
    if (tempm1[1] ==nid){
    fn=0; Nicks[n]=tempm1[0]+"\t"+tempm1[1]+"\t"+tempm1[2]+"\t"+tempm1[3]+"\t"+canal+"\t"+tempm1[5]+"\t"+tempm1[6]+"\t"+tempm1[7]+"\t"+tempm1[8]+"\t"+tempm1[9];
    }}
    Nicks.sort();
    printnick();
    }} // function nwchn()
    
    
    // Выводит весь список ников
    function printnick(){
    docnick='';
    docnickN='';
    tmpdocnick='';
    allPERSON=0;
    if (Nicks.length){
    for (var n=0; n<Nicks.length; n++){
    allPERSON++;
    var tempm1=Nicks[n].split("\t");
    var temp1="x";
    var temp2="";
    var temp3="";
    var temp4="";
    if (tempm1[3] ==1){temp1="m";}
    if (tempm1[3] ==2){temp1="f";}
    temp2="&nbsp;";
    temp3="Смотреть анкету...";
    if (tempm1[7] >0){temp3="Смотреть анкету ("+tempm1[7]+" фото)...";}
    if (tempm1[6] >0){temp2="<a href='' onclick='return top.getanket("+tempm1[6]+")' title='"+temp3+"' class=lz>?</a>";}
    temp3="";
    if (tempm1[8] >0){temp3=" onMouseOut='top.offmf();' onMouseOver='top.onmf("+tempm1[1]+");'";}
    if (tempm1[1] == myID){
    temp4="";
    if (tempm1[5]){temp4=" title='"+tempm1[5]+"...'";}
    tmpdocnick="<tr><td class='n'><b class='ly'>&laquo;</b></td>";
    tmpdocnick=tmpdocnick+"<td class='n'><b class=l"+temp1+temp4+temp3+">"+tempm1[0]+"</b></td>";
    }else{
    temp4="";
    if (tempm1[5]){temp4=tempm1[5]+"...\n";}
    tmpdocnick="<tr><td class='n'><a href='' onclick='return top.nick_totext("+tempm1[1]+",\""+tempm1[0]+"\")' class=lz title='Вставить ник в сообщение'>&laquo;</a></td>";
    tmpdocnick=tmpdocnick+"<td class='n'><a href='' onclick='return top.privat_on("+tempm1[1]+", \""+tempm1[0]+"\")' class=l"+temp1+" title='"+temp4+"Нажатие на ник = приват.'"+temp3+">"+tempm1[0]+"</a></td>";
    }
    tmpdocnick=tmpdocnick+"<td class='n'>"+temp2+"</td>";
    temp2=tempm1[9];
    temp3=temp2.substring(0, 1);
    temp4="s";
    if (temp3 == "-"){temp4="s0"; temp2=temp2.substring(1, 20);}
    if (temp3 == "+"){temp4="s1"; temp2=temp2.substring(1, 20);}
    if (temp3 == "*"){temp4="s2"; temp2=temp2.substring(1, 20);}
    if (temp3 == "="){temp4="s3"; temp2=temp2.substring(1, 20);}
    if (mySTATUS >0){temp2="<a href='' onclick='return top.adbs("+tempm1[1]+")' class='"+temp4+"'>"+temp2+"</a>";}
    tmpdocnick=tmpdocnick+"<td class='"+temp4+"' title='"+tempm1[2]+"'><nobr>"+temp2+"<nobr></td></tr>\n";
    if (myCANAL ==0){docnick=docnick+tmpdocnick;}else{if (tempm1[4] ==myCANAL){docnick=docnick+tmpdocnick;}else{docnickN=docnickN+tmpdocnick;}}
    } // for (var n=0; n<Nicks.length; n++)
    
    if (myCANAL !=0){
    temp2=allcanal[myCANAL];
    if (docnick){docnick="<table width='100%' border=0 cellspacing=1 cellpadding=3><tr><td width=8><img width=8 height=1></td><td width=135><img width=135 height=1></td><td width=8><img width=8 height=1></td><td width=80><img width=80 height=1></td></tr>\n"+docnick+"\n</table>\n";}else{docnick="<div style='MARGIN: 6px;'>Нет никто :(</div>\n";}
    if (docnickN){docnickN="<table width='100%' border=0 cellspacing=1 cellpadding=3><tr><td width=8><img width=8 height=1></td><td width=135><img width=135 height=1></td><td width=8><img width=8 height=1></td><td width=80><img width=80 height=1></td></tr>\n"+docnickN+"\n</table>\n";}else{docnickN="<div style='MARGIN: 6px;'>Нет никто :(</div>\n";}
    docnick="<h3>"+temp2+":</h3>\n"+docnick+"<BR><h3>Другие каналы:</h3>\n"+docnickN+"\n";
    }else{
    docnick="<table width='100%' border=0 cellspacing=1 cellpadding=3><tr><td width=8><img width=8 height=1></td><td width=135><img width=135 height=1></td><td width=8><img width=8 height=1></td><td width=80><img width=80 height=1></td></tr>\n"+docnick+"\n</table>";
    }
    
    } // if (Nicks.length)
    top.frames["chn"].document.all["con"].innerHTML=docnick;
    } // function printnick()
    
    // --- EN--- ФУНКЦИИ ДОБАВЛЕНИЯ И ОБНОВЛЕНИЯ СПИСКА НИКОВ ---------------------