עמוד ראשי מירק סקריפטינג מדריכים [מדריך] חיבור למירק בעזרת סוקט + דרך פרוקסי

[מדריך] חיבור למירק בעזרת סוקט + דרך פרוקסי

mIRC Guides - בפורום זה יפורסמו מדריכים לשפת המירק, הסברת פקודות ואפשרויות במירק וגם הסברים לשימוש בתוכניות חיצוניות לטובת המירק. לפרסום מדריכים יש לפרסמם תחילה בפורום "פרסום קודים ומדריכים" ולאחר מכאן הם יועברו לפורום זה.

הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 24 אוגוסט 2011, 14:10
זהו מדריך שיסביר וייתן דוגמה איך להתחבר לשרת IRC בעזרת סוקט, וגם דרך פרוקסי.

מי שרוצה לדעת את הבסיס של פרוקסי על קצה המזלג יכול לעיין במדריך של יונתן http://www.mircs.co.il/viewtopic.php?f=9&t=871 שנותן הסבר על פרוקסי.

שימו לב: השימוש ויישום המדריך באחריותכם, מדריך זה נכתב רק לצורכי ידע ותו לא.

נתחיל ?
כדי שתהיה הבנה מקסימלית, צריך סדר, כשיש סדר יש הבנה, לכן אני קודם כל אסביר פקודה פקודה לפי השלבים (אני אדלג על דברים שלא קשורים לסוקט עצמו, כמו: תנאים וכו'...) ואחרי זה אני אביא את הסקריפט המלא.
עוד דבר, כשרוצים להתחבר דרך פרוקסי אז הדרך היא טיפה שונה, אבל ממש טיפה, אז שימו לב שלא להתבלבל .
עם פרוקסי: קודם פותחים סוקט עם הכתובת של הפרוקסי ואז מתחברים לשרת IRC
בלי פרוקסי: פותחים סוקט עם הכתובת של השרת IRC

שלב א' - פתיחת סוקט
sockopen sockname ip port

sockname - שם של הסוקט
ip port - במידה ומתחברים דרך פרוקסי, אז רושמים את הכתובת של הפרוקסי, אחרת את הכתובת של השרת IRC (מירק)

שלב ב' - אחרי שנפתח הסוקט אנחנו צריכים לשלוח את הפרטים שלנו הדרושים לחיבור לשרת ה IRC
רק במידה ואנו מתחברים דרך פרוקסי נרשום את הפקודה הזאת, אחרת אין צורך:
sockwrite -tn $sockname CONNECT $+($server,:,$port) HTTP/1.0 $+ $crlf $+ $crlf

בעזרת הפקודה הזאת אנחנו אומרים לפרוקסי להתחבר לשרת IRC.
אחרי שהתחברנו לשרת IRC אנחנו נשלח את הפרטים שלנו כמו: אימייל, שם, כינוי ועוד'...
לדוגמה אם הפרטים שלי הם:
Full name: roman
Email Address: r@gmail.com
Nickname: Zen-
Server: irc.quakenet.org

כך נמלא את הפרטים
sockwrite -tn $sockname USER r "gmail.com" "irc.quakenet.org" :roman
sockwrite -tn $sockname nick Zen-


שלב ג' - PING
שרתי ה IRC בודקים כל הזמן אם אנחנו עדיין "חיים", אם אנחנו מחוברים עדיין ומגיבים, בעזרת PING ו- PONG.
הם שולחים לנו PING ואנחנו מגיבים להם PONG. במידה ולא נוודא שהסוקט שלנו מבצע זאת השרת ינתק אותו אוטומטית, לכן:
on *:sockread:sockname:{
  if ($sockerr > 0) { sockclose $sockname | return }
  sockread %a
  tokenize 32 %a
  if (PING == $1) { sockwrite -tn $sockname PONG $2 | halt }
}

כשיש שגיאה בסוקט ה sockerr$ יהיה גדול מ- 0, לכן במידה וזה יקרה הסוקט ייסגר.
כשהשרת שולח לנו PING הוא שולח בצורה הזאת: PING :port80c.se.quakenet.org
בודקים שהמילה הראשונה זה PING, אז אנחנו שולחים PONG למילה השנייה, שהיא בעצם השרת אליו אנחנו מחוברים.

במידה והגעתם עד לכאן, אתם אמורים להיות מחוברים לשרת דרך הסוקט.
כדי לבצע פעולות שונות, כמו כניסה לערוץ, שליחת הודעה וכו'... הדרך טיפה שונה מהדרך הרגילה מבחינת המבנה (לא בהכל)
להלן דוגמאות:
ביצוע פקודות -                       sockwrite -tn sockname command
כניסה/יציאה לערוץ -                  sockwrite -tn sockname join/part #channel
שליחת הודעה לערוץ או למישהו מסויים - sockwrite -tn sockname privmsg #channel/nick :bla bla
notice -                             sockwrite -tn sockname notice #channel/nick :bla bla



שלב ד' - הקוד המלא
שימוש-
/sockbot [-p] [proxyip:port] <ip:port> <nick>

במידה ורוצים להכנס דרך פרוקסי יש לציין את הסוויצ' p- ואת הכתובת של הפרוקסי
ביצוע פקודות לסוקט-
/sockcmd command

הקוד:
alias sockbot {
  tokenize 32 $1-
  if ($1 == -p) && ($0 == 4) {
    set %sockbot.irc $3
    sockopen $+(sockbot,$4) $replace($2,:,$chr(32))
  }
  elseif ($0 == 2) {
    sockopen $+(sockbot,$2) $replace($1,:,$chr(32))
  }
}
on *:sockopen:sockbot*:{
  if ($sockerr > 0) { echo -a error }
  else {
    if (%sockbot.irc) {
      sockwrite -tn $sockname CONNECT %sockbot.irc HTTP/1.0 $+ $crlf $+ $crlf
      sockwrite -tn $sockname USER bot "gmail.com" "irc.quakenet.org" :sockbot $+ $crlf
      sockwrite -tn $sockname NICK $right($sockname,-7) $+ $crlf $+ $crlf
      unset %sockbot.irc
    }
    else {
      sockwrite -tn $sockname USER bot "gmail.com" "irc.quakenet.org" :sockbot
      sockwrite -tn $sockname NICK $right($sockname,-7) 
    }
  }
}
on *:sockread:sockbot*:{
  if ($sockerr > 0) { sockclose $sockname | return }
  sockread %sockbot
  tokenize 32 %sockbot
  if (PING == $1) { sockwrite -tn $sockname PONG $2 | halt }
  elseif ($2 == 376) { echo -a connected }
}
alias sockcmd { sockwrite -tn sockbot* $1- }


מקווה שהייתי ברור, אם יש הערות, באגים, או כל דבר אחר נא להגיד.

הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 24 אוגוסט 2011, 14:12
כל הכבוד! מועבר לפורום מדריכים!
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

הצטרף: 15 אוגוסט 2010, 14:55
הודעות: 20
פורסם: 24 אוגוסט 2011, 14:13
תודה רבה למדתי המון :)

הצטרף: 31 אוגוסט 2010, 11:07
הודעות: 57
פורסם: 24 אוגוסט 2011, 14:18
תודה רבה על המדריך :)

הצטרף: 07 נובמבר 2011, 11:26
הודעות: 12
פורסם: 07 נובמבר 2011, 11:31
היי
אני חדש בפורום אבל אני חייב לציין שזה אחלה מדריך שעשית.
יש לי גם שאלה: האם הפרוקסי דרכו אני מתחבר הוא פרוקסי HTTP או שזה יכול להיות גם פרוקסי sock4 ו- socks5?
פשוט משומה זה לא עובד לי וחשבתי שאולי הסיבה היא שאני מנסה להתחבר דרך socks4

הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 25 ינואר 2012, 15:37
פרוקסי HTTP.

הצטרף: 05 פברואר 2012, 13:50
הודעות: 5
פורסם: 24 פברואר 2012, 22:57
רומן אחלה מדריך למדתי המון ;) !!!


חזור אל מדריכים