From a6d58bb6052ac8cb01805a48c4ad2f129126116f Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 24 Feb 2010 02:13:59 +0000 Subject: Added KDE3 version of kvirc git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- data/Makefile.am | 6 + data/applnk/Makefile.am | 5 + data/applnk/kvirc.desktop | 18 + data/config/Makefile.am | 5 + data/config/serverdb.kvc | 1611 ++++++++++ data/config/texticons.kvc | 39 + data/defscript/Makefile.am | 11 + data/defscript/aliases.kvs | 706 +++++ data/defscript/default.kvs | 37 + data/defscript/events.kvs | 105 + data/defscript/installer.kvs | 169 + data/defscript/popups.kvs | 1381 ++++++++ data/defscript/theme-install.kvs | 30 + data/defscript/toolbars.kvs | 43 + data/deftheme/Makefile.am | 2 + data/deftheme/silverirc/Makefile.am | 5 + data/deftheme/silverirc/pixmapInputBackground.png | Bin 0 -> 200 bytes .../deftheme/silverirc/pixmapIrcViewBackground.png | Bin 0 -> 12760 bytes .../silverirc/pixmapUserListViewBackground.png | Bin 0 -> 237 bytes data/deftheme/silverirc/themedata.kvc | 273 ++ data/deftheme/silverirc/themeinfo.kvc | 10 + data/doctemplates/Makefile.am | 1 + data/doctemplates/ircintro.template | 60 + data/doctemplates/kvircintro.template | 67 + data/doctemplates/rfc2812.template | 3312 ++++++++++++++++++++ data/helppics/Makefile.am | 5 + data/helppics/helplogoleft.png | Bin 0 -> 7100 bytes data/helppics/helplogoright.png | Bin 0 -> 4293 bytes data/icons/128x128/Makefile.am | 5 + data/icons/128x128/kva.png | Bin 0 -> 11983 bytes data/icons/128x128/kvc.png | Bin 0 -> 12499 bytes data/icons/128x128/kvirc.png | Bin 0 -> 14195 bytes data/icons/128x128/kvs.png | Bin 0 -> 13485 bytes data/icons/128x128/kvt.png | Bin 0 -> 12714 bytes data/icons/16x16/Makefile.am | 5 + data/icons/16x16/kva.png | Bin 0 -> 838 bytes data/icons/16x16/kvc.png | Bin 0 -> 802 bytes data/icons/16x16/kvirc.png | Bin 0 -> 966 bytes data/icons/16x16/kvs.png | Bin 0 -> 837 bytes data/icons/16x16/kvt.png | Bin 0 -> 859 bytes data/icons/32x32/Makefile.am | 6 + data/icons/32x32/kva.png | Bin 0 -> 2065 bytes data/icons/32x32/kvc.png | Bin 0 -> 1955 bytes data/icons/32x32/kvirc.png | Bin 0 -> 2286 bytes data/icons/32x32/kvirc.xpm | 295 ++ data/icons/32x32/kvs.png | Bin 0 -> 2135 bytes data/icons/32x32/kvt.png | Bin 0 -> 2137 bytes data/icons/48x48/Makefile.am | 5 + data/icons/48x48/kva.png | Bin 0 -> 3454 bytes data/icons/48x48/kvc.png | Bin 0 -> 3346 bytes data/icons/48x48/kvirc.png | Bin 0 -> 3864 bytes data/icons/48x48/kvirc.xpm | 311 ++ data/icons/48x48/kvs.png | Bin 0 -> 3665 bytes data/icons/48x48/kvt.png | Bin 0 -> 3647 bytes data/icons/64x64/Makefile.am | 5 + data/icons/64x64/kvirc.png | Bin 0 -> 5612 bytes data/icons/64x64/kvs.png | Bin 0 -> 5441 bytes data/icons/Makefile.am | 5 + data/icons/scalable/Makefile.am | 5 + data/icons/scalable/createpng.sh | 24 + data/icons/scalable/kva.svgz | Bin 0 -> 5226 bytes data/icons/scalable/kvc.svgz | Bin 0 -> 7557 bytes data/icons/scalable/kvirc.svgz | Bin 0 -> 2759 bytes data/icons/scalable/kvs.svgz | Bin 0 -> 10411 bytes data/icons/scalable/kvt.svgz | Bin 0 -> 10270 bytes data/man/Makefile.am | 3 + data/man/kvirc.1 | 133 + data/mimelnk/Makefile.am | 5 + data/mimelnk/x-kva.desktop | 7 + data/mimelnk/x-kvc.desktop | 7 + data/mimelnk/x-kvs.desktop | 7 + data/mimelnk/x-kvt.desktop | 7 + data/msgcolors/Makefile.am | 5 + data/msgcolors/all-black.msgclr | 659 ++++ data/msgcolors/all-gray.msgclr | 659 ++++ data/msgcolors/all-green.msgclr | 659 ++++ data/msgcolors/all-white.msgclr | 659 ++++ data/msgcolors/colored-2.msgclr | 659 ++++ data/msgcolors/colored.msgclr | 659 ++++ data/msgcolors/default.msgclr | 659 ++++ data/msgcolors/heavy-colors.msgclr | 659 ++++ data/pics/Makefile.am | 8 + data/pics/coresmall/Makefile.am | 8 + data/pics/coresmall/kcs_accept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_action.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_addons.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_afraid.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_alert.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_alias.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_aliashighlighted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_angry.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_applet.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_autotilewindows.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_avatar.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_away.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ban.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_banexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_banunexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_biggrin.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_biggrineyes.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_biggringlasses.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_binarytext.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_blacksquare.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_bluesquare.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_bomb.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_bookmarks.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_broadcastnotice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_broadcastprivmsg.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_bug.png | Bin 0 -> 862 bytes data/pics/coresmall/kcs_cafe.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_canvas.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_caption.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_cascadewindows.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanadmin.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanadminaway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanmode.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanmodehide.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_channel.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_channelnotice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_channelnoticecrypted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanowner.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanowneraway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanprivmsg.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanprivmsgcrypted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanserv.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanunadmin.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_chanunowner.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_classictaskbar.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_close.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_colors.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_console.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_copy.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_cry.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ctcpreply.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ctcpreplyunknown.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ctcprequestflood.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ctcprequestignored.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ctcprequestreplied.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_ctcprequestunknown.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_cut.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_cyansquare.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dccchatmsg.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dccchatmsgcrypted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dccerror.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_dccmsg.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dccrequest.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dccvoice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_deadchannel.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_deadquery.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_default.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_deleteitem.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_demoralized.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_deop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_deuserop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_devoice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_discard.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dkgreensquare.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_dock.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_dockwidget.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_edititem.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_editor.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_epilogue.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_event.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_eventnohandlers.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_eye.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_file.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_files.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_filetransfer.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_finger.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_floppy.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_folder.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_gnutella.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_greensquare.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_gui.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_halfdeop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_halfop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_halfopaway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_handler.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_handlerdisabled.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_heart.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_heartbroken.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_help.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_hidedoubleview.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_hidelistview.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_home.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_homepage.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_iconmanager.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_icq.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_icqblue.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_icqlightgreen.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_icqlightyellow.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_icqred.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_icqyellow.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_idea.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ident.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ignore.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_input.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_invisible.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_invite.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_inviteexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_inviteunexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc0.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc1.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc2.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc3.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc4.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_irc5.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ircview.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_join.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_key.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_kick.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_kiss.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_kvirc.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_limit.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_links.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_linux.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_list.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_locked.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_lockedoff.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_log.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_look.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_maxhorizontal.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_maximize.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_maxvertical.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mdihelp.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_meban.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mebanexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mebanunexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mechanadmin.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mechanowner.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mechanunadmin.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mechanunowner.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_medehalfop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_medeop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_medeuserop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_medevoice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mehalfop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_meinviteexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_meinviteunexcept.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mekick.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_meop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_message.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_messages.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_messagesent.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_meunban.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_meuserop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mevoice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_minimize.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_minus.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_mode.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_motd.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_multimedia.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_namespace.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_newitem.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_newitembywizard.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_nick.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_nicknameproblem.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_nickserv.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_nochannel.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_none.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_notaway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_notifyoffline.png | Bin 0 -> 1086 bytes data/pics/coresmall/kcs_notifyonline.png | Bin 0 -> 1034 bytes data/pics/coresmall/kcs_op.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_opaway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_options.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ownprivmsg.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ownprivmsgcrypted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_package.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_parsererror.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_parserwarning.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_part.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_paste.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_play.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_plus.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_popup.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_popupmenu.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_prologue.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_proxy.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_query.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_querynotice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_querynoticecrypted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_queryprivmsg.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_queryprivmsgcrypted.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_querytrace.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_quit.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_quitapp.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_quitsplit.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_raw.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_rawevent.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_raweventnohandlers.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_record.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_redsquare.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_refresh.png | Bin 0 -> 1044 bytes data/pics/coresmall/kcs_regusers.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_restore.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_retry.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_rose.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_saycolors.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_sayicon.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_saykvs.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_saysmile.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_screenshot.png | Bin 0 -> 688 bytes data/pics/coresmall/kcs_scriptaction.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_scriptcenter.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_search.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_server.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_servererror.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_serverinfo.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_servernotice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_serverping.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_servnotice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_sharedfiles.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_showdoubleview.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_showlistview.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_shy.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_slurp.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_smile.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_socketerror.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_socketmessage.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_socketwarning.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_sound.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_spam.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_split.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_spy.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ssl.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_stats.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_statusbar.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_surprised1.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_surprised2.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_systemerror.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_systemmessage.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_systemwarning.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_tearsmile.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_terminal.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_textencoding.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_textexclamative.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_textpoints.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_theme.png | Bin 0 -> 739 bytes data/pics/coresmall/kcs_themeoptions.png | Bin 0 -> 928 bytes data/pics/coresmall/kcs_tilewindows.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_time.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_tongue.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_tongue2.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_toolbar.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_topic.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_transfer.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_transparent.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_treetaskbar.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_ugly.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_unban.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_undock.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_unhandled.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_unlocked.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_unlockedoff.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_unrecognized.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_url.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_userlist.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_userop.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_useropaway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_userwindow.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_violetsquare.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_voice.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_voiceaway.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_wallops.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_who.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_whoischannels.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_whoisidle.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_whoisother.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_whoisserver.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_whoisuser.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_world.png | Bin 0 -> 1107 bytes data/pics/coresmall/kcs_xy.png | Bin 0 -> 1106 bytes data/pics/coresmall/kcs_yellowsquare.png | Bin 0 -> 1106 bytes data/pics/kvi_actiondrawer.png | Bin 0 -> 181743 bytes data/pics/kvi_activitymeter.png | Bin 0 -> 6509 bytes data/pics/kvi_bigicon_actioneditor.png | Bin 0 -> 1693 bytes data/pics/kvi_bigicon_actions.png | Bin 0 -> 1951 bytes data/pics/kvi_bigicon_addons.png | Bin 0 -> 2536 bytes data/pics/kvi_bigicon_aliaseditor.png | Bin 0 -> 1607 bytes data/pics/kvi_bigicon_cascadewindows.png | Bin 0 -> 998 bytes data/pics/kvi_bigicon_channellist.png | Bin 0 -> 509 bytes data/pics/kvi_bigicon_channels.png | Bin 0 -> 1818 bytes data/pics/kvi_bigicon_channelspopup.png | Bin 0 -> 1818 bytes data/pics/kvi_bigicon_codetester.png | Bin 0 -> 1660 bytes data/pics/kvi_bigicon_connected.png | Bin 0 -> 2305 bytes data/pics/kvi_bigicon_connecting.png | Bin 0 -> 2535 bytes data/pics/kvi_bigicon_disconnected.png | Bin 0 -> 2271 bytes data/pics/kvi_bigicon_eventeditor.png | Bin 0 -> 1708 bytes data/pics/kvi_bigicon_folder.png | Bin 0 -> 2971 bytes data/pics/kvi_bigicon_help.png | Bin 0 -> 2646 bytes data/pics/kvi_bigicon_helpback.png | Bin 0 -> 1228 bytes data/pics/kvi_bigicon_helpclose.png | Bin 0 -> 1376 bytes data/pics/kvi_bigicon_helpforward.png | Bin 0 -> 1242 bytes data/pics/kvi_bigicon_helpindex.png | Bin 0 -> 1711 bytes data/pics/kvi_bigicon_helpsearch.png | Bin 0 -> 975 bytes data/pics/kvi_bigicon_identity.png | Bin 0 -> 1818 bytes data/pics/kvi_bigicon_irccontextdisplay.png | Bin 0 -> 857 bytes data/pics/kvi_bigicon_keyboard.png | Bin 0 -> 1481 bytes data/pics/kvi_bigicon_kvircwww.png | Bin 0 -> 2287 bytes data/pics/kvi_bigicon_kvs.png | Bin 0 -> 1870 bytes data/pics/kvi_bigicon_mailinglist.png | Bin 0 -> 2308 bytes data/pics/kvi_bigicon_minimizeallwindows.png | Bin 0 -> 1654 bytes data/pics/kvi_bigicon_networklinks.png | Bin 0 -> 1765 bytes data/pics/kvi_bigicon_newirccontext.png | Bin 0 -> 2084 bytes data/pics/kvi_bigicon_nickpopup.png | Bin 0 -> 1639 bytes data/pics/kvi_bigicon_nokeyboard.png | Bin 0 -> 1797 bytes data/pics/kvi_bigicon_open.png | Bin 0 -> 2237 bytes data/pics/kvi_bigicon_pack.png | Bin 0 -> 2203 bytes data/pics/kvi_bigicon_popupeditor.png | Bin 0 -> 1240 bytes data/pics/kvi_bigicon_quit.png | Bin 0 -> 2445 bytes data/pics/kvi_bigicon_raweditor.png | Bin 0 -> 1394 bytes data/pics/kvi_bigicon_regusers.png | Bin 0 -> 2968 bytes data/pics/kvi_bigicon_remove.png | Bin 0 -> 2843 bytes data/pics/kvi_bigicon_save.png | Bin 0 -> 1740 bytes data/pics/kvi_bigicon_screenshot.png | Bin 0 -> 1973 bytes data/pics/kvi_bigicon_separator.png | Bin 0 -> 479 bytes data/pics/kvi_bigicon_server.png | Bin 0 -> 1947 bytes data/pics/kvi_bigicon_servers.png | Bin 0 -> 2079 bytes data/pics/kvi_bigicon_settings.png | Bin 0 -> 1906 bytes data/pics/kvi_bigicon_socketspy.png | Bin 0 -> 2418 bytes data/pics/kvi_bigicon_theme.png | Bin 0 -> 2407 bytes data/pics/kvi_bigicon_themeoptions.png | Bin 0 -> 2190 bytes data/pics/kvi_bigicon_tilewindows.png | Bin 0 -> 644 bytes data/pics/kvi_bigicon_toolbareditor.png | Bin 0 -> 1440 bytes data/pics/kvi_bigicon_tools.png | Bin 0 -> 2577 bytes data/pics/kvi_bigicon_trashcan.png | Bin 0 -> 2235 bytes data/pics/kvi_bigicon_unknown.png | Bin 0 -> 1977 bytes data/pics/kvi_bigicon_usermode.png | Bin 0 -> 1749 bytes data/pics/kvi_bigicon_www.png | Bin 0 -> 2668 bytes data/pics/kvi_checkbox_selected.png | Bin 0 -> 346 bytes data/pics/kvi_checkbox_unselected.png | Bin 0 -> 222 bytes data/pics/kvi_horizontal_left.png | Bin 0 -> 439 bytes data/pics/kvi_horizontal_right.png | Bin 0 -> 416 bytes data/pics/kvi_icon_bot.png | Bin 0 -> 539 bytes data/pics/kvi_icon_female.png | Bin 0 -> 277 bytes data/pics/kvi_icon_male.png | Bin 0 -> 289 bytes data/pics/kvi_icon_refresh.png | Bin 0 -> 1146 bytes data/pics/kvi_setup_label.png | Bin 0 -> 161081 bytes data/pics/kvi_setup_theme_hires.png | Bin 0 -> 66729 bytes data/pics/kvi_setup_theme_lowres.png | Bin 0 -> 29162 bytes data/pics/kvi_splash.png | Bin 0 -> 198483 bytes data/pics/kvi_splash_overlay.png | Bin 0 -> 7729 bytes data/pics/kvi_toolbutton_menuindicator.png | Bin 0 -> 79 bytes data/pics/kvi_userchanstate.png | Bin 0 -> 8021 bytes data/protocols/Makefile.am | 9 + data/protocols/irc.protocol | 11 + data/protocols/irc6.protocol | 11 + data/resources/Makefile.am | 3 + data/resources/icon1.ico | Bin 0 -> 3774 bytes data/resources/kvirc.rc | 29 + data/resources/resource.h | 20 + data/resources_mac/Info.plist.in | 40 + data/resources_mac/Makefile.am | 8 + data/resources_mac/kvirc.icns | Bin 0 -> 52772 bytes 456 files changed, 14160 insertions(+) create mode 100644 data/Makefile.am create mode 100644 data/applnk/Makefile.am create mode 100644 data/applnk/kvirc.desktop create mode 100644 data/config/Makefile.am create mode 100644 data/config/serverdb.kvc create mode 100644 data/config/texticons.kvc create mode 100644 data/defscript/Makefile.am create mode 100644 data/defscript/aliases.kvs create mode 100644 data/defscript/default.kvs create mode 100644 data/defscript/events.kvs create mode 100644 data/defscript/installer.kvs create mode 100644 data/defscript/popups.kvs create mode 100644 data/defscript/theme-install.kvs create mode 100644 data/defscript/toolbars.kvs create mode 100644 data/deftheme/Makefile.am create mode 100644 data/deftheme/silverirc/Makefile.am create mode 100644 data/deftheme/silverirc/pixmapInputBackground.png create mode 100644 data/deftheme/silverirc/pixmapIrcViewBackground.png create mode 100644 data/deftheme/silverirc/pixmapUserListViewBackground.png create mode 100644 data/deftheme/silverirc/themedata.kvc create mode 100644 data/deftheme/silverirc/themeinfo.kvc create mode 100644 data/doctemplates/Makefile.am create mode 100644 data/doctemplates/ircintro.template create mode 100644 data/doctemplates/kvircintro.template create mode 100644 data/doctemplates/rfc2812.template create mode 100644 data/helppics/Makefile.am create mode 100644 data/helppics/helplogoleft.png create mode 100644 data/helppics/helplogoright.png create mode 100644 data/icons/128x128/Makefile.am create mode 100644 data/icons/128x128/kva.png create mode 100644 data/icons/128x128/kvc.png create mode 100644 data/icons/128x128/kvirc.png create mode 100644 data/icons/128x128/kvs.png create mode 100644 data/icons/128x128/kvt.png create mode 100644 data/icons/16x16/Makefile.am create mode 100644 data/icons/16x16/kva.png create mode 100644 data/icons/16x16/kvc.png create mode 100644 data/icons/16x16/kvirc.png create mode 100644 data/icons/16x16/kvs.png create mode 100644 data/icons/16x16/kvt.png create mode 100644 data/icons/32x32/Makefile.am create mode 100644 data/icons/32x32/kva.png create mode 100644 data/icons/32x32/kvc.png create mode 100644 data/icons/32x32/kvirc.png create mode 100644 data/icons/32x32/kvirc.xpm create mode 100644 data/icons/32x32/kvs.png create mode 100644 data/icons/32x32/kvt.png create mode 100644 data/icons/48x48/Makefile.am create mode 100644 data/icons/48x48/kva.png create mode 100644 data/icons/48x48/kvc.png create mode 100644 data/icons/48x48/kvirc.png create mode 100644 data/icons/48x48/kvirc.xpm create mode 100644 data/icons/48x48/kvs.png create mode 100644 data/icons/48x48/kvt.png create mode 100644 data/icons/64x64/Makefile.am create mode 100644 data/icons/64x64/kvirc.png create mode 100644 data/icons/64x64/kvs.png create mode 100644 data/icons/Makefile.am create mode 100644 data/icons/scalable/Makefile.am create mode 100644 data/icons/scalable/createpng.sh create mode 100644 data/icons/scalable/kva.svgz create mode 100644 data/icons/scalable/kvc.svgz create mode 100644 data/icons/scalable/kvirc.svgz create mode 100644 data/icons/scalable/kvs.svgz create mode 100644 data/icons/scalable/kvt.svgz create mode 100644 data/man/Makefile.am create mode 100644 data/man/kvirc.1 create mode 100644 data/mimelnk/Makefile.am create mode 100644 data/mimelnk/x-kva.desktop create mode 100644 data/mimelnk/x-kvc.desktop create mode 100644 data/mimelnk/x-kvs.desktop create mode 100644 data/mimelnk/x-kvt.desktop create mode 100644 data/msgcolors/Makefile.am create mode 100644 data/msgcolors/all-black.msgclr create mode 100644 data/msgcolors/all-gray.msgclr create mode 100644 data/msgcolors/all-green.msgclr create mode 100644 data/msgcolors/all-white.msgclr create mode 100644 data/msgcolors/colored-2.msgclr create mode 100644 data/msgcolors/colored.msgclr create mode 100644 data/msgcolors/default.msgclr create mode 100644 data/msgcolors/heavy-colors.msgclr create mode 100644 data/pics/Makefile.am create mode 100644 data/pics/coresmall/Makefile.am create mode 100644 data/pics/coresmall/kcs_accept.png create mode 100644 data/pics/coresmall/kcs_action.png create mode 100644 data/pics/coresmall/kcs_addons.png create mode 100644 data/pics/coresmall/kcs_afraid.png create mode 100644 data/pics/coresmall/kcs_alert.png create mode 100644 data/pics/coresmall/kcs_alias.png create mode 100644 data/pics/coresmall/kcs_aliashighlighted.png create mode 100644 data/pics/coresmall/kcs_angry.png create mode 100644 data/pics/coresmall/kcs_applet.png create mode 100644 data/pics/coresmall/kcs_autotilewindows.png create mode 100644 data/pics/coresmall/kcs_avatar.png create mode 100644 data/pics/coresmall/kcs_away.png create mode 100644 data/pics/coresmall/kcs_ban.png create mode 100644 data/pics/coresmall/kcs_banexcept.png create mode 100644 data/pics/coresmall/kcs_banunexcept.png create mode 100644 data/pics/coresmall/kcs_biggrin.png create mode 100644 data/pics/coresmall/kcs_biggrineyes.png create mode 100644 data/pics/coresmall/kcs_biggringlasses.png create mode 100644 data/pics/coresmall/kcs_binarytext.png create mode 100644 data/pics/coresmall/kcs_blacksquare.png create mode 100644 data/pics/coresmall/kcs_bluesquare.png create mode 100644 data/pics/coresmall/kcs_bomb.png create mode 100644 data/pics/coresmall/kcs_bookmarks.png create mode 100644 data/pics/coresmall/kcs_broadcastnotice.png create mode 100644 data/pics/coresmall/kcs_broadcastprivmsg.png create mode 100644 data/pics/coresmall/kcs_bug.png create mode 100644 data/pics/coresmall/kcs_cafe.png create mode 100644 data/pics/coresmall/kcs_canvas.png create mode 100644 data/pics/coresmall/kcs_caption.png create mode 100644 data/pics/coresmall/kcs_cascadewindows.png create mode 100644 data/pics/coresmall/kcs_chanadmin.png create mode 100644 data/pics/coresmall/kcs_chanadminaway.png create mode 100644 data/pics/coresmall/kcs_chanmode.png create mode 100644 data/pics/coresmall/kcs_chanmodehide.png create mode 100644 data/pics/coresmall/kcs_channel.png create mode 100644 data/pics/coresmall/kcs_channelnotice.png create mode 100644 data/pics/coresmall/kcs_channelnoticecrypted.png create mode 100644 data/pics/coresmall/kcs_chanowner.png create mode 100644 data/pics/coresmall/kcs_chanowneraway.png create mode 100644 data/pics/coresmall/kcs_chanprivmsg.png create mode 100644 data/pics/coresmall/kcs_chanprivmsgcrypted.png create mode 100644 data/pics/coresmall/kcs_chanserv.png create mode 100644 data/pics/coresmall/kcs_chanunadmin.png create mode 100644 data/pics/coresmall/kcs_chanunowner.png create mode 100644 data/pics/coresmall/kcs_classictaskbar.png create mode 100644 data/pics/coresmall/kcs_close.png create mode 100644 data/pics/coresmall/kcs_colors.png create mode 100644 data/pics/coresmall/kcs_console.png create mode 100644 data/pics/coresmall/kcs_copy.png create mode 100644 data/pics/coresmall/kcs_cry.png create mode 100644 data/pics/coresmall/kcs_ctcpreply.png create mode 100644 data/pics/coresmall/kcs_ctcpreplyunknown.png create mode 100644 data/pics/coresmall/kcs_ctcprequestflood.png create mode 100644 data/pics/coresmall/kcs_ctcprequestignored.png create mode 100644 data/pics/coresmall/kcs_ctcprequestreplied.png create mode 100644 data/pics/coresmall/kcs_ctcprequestunknown.png create mode 100644 data/pics/coresmall/kcs_cut.png create mode 100644 data/pics/coresmall/kcs_cyansquare.png create mode 100644 data/pics/coresmall/kcs_dccchatmsg.png create mode 100644 data/pics/coresmall/kcs_dccchatmsgcrypted.png create mode 100644 data/pics/coresmall/kcs_dccerror.png create mode 100644 data/pics/coresmall/kcs_dccmsg.png create mode 100644 data/pics/coresmall/kcs_dccrequest.png create mode 100644 data/pics/coresmall/kcs_dccvoice.png create mode 100644 data/pics/coresmall/kcs_deadchannel.png create mode 100644 data/pics/coresmall/kcs_deadquery.png create mode 100644 data/pics/coresmall/kcs_default.png create mode 100644 data/pics/coresmall/kcs_deleteitem.png create mode 100644 data/pics/coresmall/kcs_demoralized.png create mode 100644 data/pics/coresmall/kcs_deop.png create mode 100644 data/pics/coresmall/kcs_deuserop.png create mode 100644 data/pics/coresmall/kcs_devoice.png create mode 100644 data/pics/coresmall/kcs_discard.png create mode 100644 data/pics/coresmall/kcs_dkgreensquare.png create mode 100644 data/pics/coresmall/kcs_dock.png create mode 100644 data/pics/coresmall/kcs_dockwidget.png create mode 100644 data/pics/coresmall/kcs_edititem.png create mode 100644 data/pics/coresmall/kcs_editor.png create mode 100644 data/pics/coresmall/kcs_epilogue.png create mode 100644 data/pics/coresmall/kcs_event.png create mode 100644 data/pics/coresmall/kcs_eventnohandlers.png create mode 100644 data/pics/coresmall/kcs_eye.png create mode 100644 data/pics/coresmall/kcs_file.png create mode 100644 data/pics/coresmall/kcs_files.png create mode 100644 data/pics/coresmall/kcs_filetransfer.png create mode 100644 data/pics/coresmall/kcs_finger.png create mode 100644 data/pics/coresmall/kcs_floppy.png create mode 100644 data/pics/coresmall/kcs_folder.png create mode 100644 data/pics/coresmall/kcs_gnutella.png create mode 100644 data/pics/coresmall/kcs_greensquare.png create mode 100644 data/pics/coresmall/kcs_gui.png create mode 100644 data/pics/coresmall/kcs_halfdeop.png create mode 100644 data/pics/coresmall/kcs_halfop.png create mode 100644 data/pics/coresmall/kcs_halfopaway.png create mode 100644 data/pics/coresmall/kcs_handler.png create mode 100644 data/pics/coresmall/kcs_handlerdisabled.png create mode 100644 data/pics/coresmall/kcs_heart.png create mode 100644 data/pics/coresmall/kcs_heartbroken.png create mode 100644 data/pics/coresmall/kcs_help.png create mode 100644 data/pics/coresmall/kcs_hidedoubleview.png create mode 100644 data/pics/coresmall/kcs_hidelistview.png create mode 100644 data/pics/coresmall/kcs_home.png create mode 100644 data/pics/coresmall/kcs_homepage.png create mode 100644 data/pics/coresmall/kcs_iconmanager.png create mode 100644 data/pics/coresmall/kcs_icq.png create mode 100644 data/pics/coresmall/kcs_icqblue.png create mode 100644 data/pics/coresmall/kcs_icqlightgreen.png create mode 100644 data/pics/coresmall/kcs_icqlightyellow.png create mode 100644 data/pics/coresmall/kcs_icqred.png create mode 100644 data/pics/coresmall/kcs_icqyellow.png create mode 100644 data/pics/coresmall/kcs_idea.png create mode 100644 data/pics/coresmall/kcs_ident.png create mode 100644 data/pics/coresmall/kcs_ignore.png create mode 100644 data/pics/coresmall/kcs_input.png create mode 100644 data/pics/coresmall/kcs_invisible.png create mode 100644 data/pics/coresmall/kcs_invite.png create mode 100644 data/pics/coresmall/kcs_inviteexcept.png create mode 100644 data/pics/coresmall/kcs_inviteunexcept.png create mode 100644 data/pics/coresmall/kcs_irc.png create mode 100644 data/pics/coresmall/kcs_irc0.png create mode 100644 data/pics/coresmall/kcs_irc1.png create mode 100644 data/pics/coresmall/kcs_irc2.png create mode 100644 data/pics/coresmall/kcs_irc3.png create mode 100644 data/pics/coresmall/kcs_irc4.png create mode 100644 data/pics/coresmall/kcs_irc5.png create mode 100644 data/pics/coresmall/kcs_ircview.png create mode 100644 data/pics/coresmall/kcs_join.png create mode 100644 data/pics/coresmall/kcs_key.png create mode 100644 data/pics/coresmall/kcs_kick.png create mode 100644 data/pics/coresmall/kcs_kiss.png create mode 100644 data/pics/coresmall/kcs_kvirc.png create mode 100644 data/pics/coresmall/kcs_limit.png create mode 100644 data/pics/coresmall/kcs_links.png create mode 100644 data/pics/coresmall/kcs_linux.png create mode 100644 data/pics/coresmall/kcs_list.png create mode 100644 data/pics/coresmall/kcs_locked.png create mode 100644 data/pics/coresmall/kcs_lockedoff.png create mode 100644 data/pics/coresmall/kcs_log.png create mode 100644 data/pics/coresmall/kcs_look.png create mode 100644 data/pics/coresmall/kcs_maxhorizontal.png create mode 100644 data/pics/coresmall/kcs_maximize.png create mode 100644 data/pics/coresmall/kcs_maxvertical.png create mode 100644 data/pics/coresmall/kcs_mdihelp.png create mode 100644 data/pics/coresmall/kcs_meban.png create mode 100644 data/pics/coresmall/kcs_mebanexcept.png create mode 100644 data/pics/coresmall/kcs_mebanunexcept.png create mode 100644 data/pics/coresmall/kcs_mechanadmin.png create mode 100644 data/pics/coresmall/kcs_mechanowner.png create mode 100644 data/pics/coresmall/kcs_mechanunadmin.png create mode 100644 data/pics/coresmall/kcs_mechanunowner.png create mode 100644 data/pics/coresmall/kcs_medehalfop.png create mode 100644 data/pics/coresmall/kcs_medeop.png create mode 100644 data/pics/coresmall/kcs_medeuserop.png create mode 100644 data/pics/coresmall/kcs_medevoice.png create mode 100644 data/pics/coresmall/kcs_mehalfop.png create mode 100644 data/pics/coresmall/kcs_meinviteexcept.png create mode 100644 data/pics/coresmall/kcs_meinviteunexcept.png create mode 100644 data/pics/coresmall/kcs_mekick.png create mode 100644 data/pics/coresmall/kcs_meop.png create mode 100644 data/pics/coresmall/kcs_message.png create mode 100644 data/pics/coresmall/kcs_messages.png create mode 100644 data/pics/coresmall/kcs_messagesent.png create mode 100644 data/pics/coresmall/kcs_meunban.png create mode 100644 data/pics/coresmall/kcs_meuserop.png create mode 100644 data/pics/coresmall/kcs_mevoice.png create mode 100644 data/pics/coresmall/kcs_minimize.png create mode 100644 data/pics/coresmall/kcs_minus.png create mode 100644 data/pics/coresmall/kcs_mode.png create mode 100644 data/pics/coresmall/kcs_motd.png create mode 100644 data/pics/coresmall/kcs_multimedia.png create mode 100644 data/pics/coresmall/kcs_namespace.png create mode 100644 data/pics/coresmall/kcs_newitem.png create mode 100644 data/pics/coresmall/kcs_newitembywizard.png create mode 100644 data/pics/coresmall/kcs_nick.png create mode 100644 data/pics/coresmall/kcs_nicknameproblem.png create mode 100644 data/pics/coresmall/kcs_nickserv.png create mode 100644 data/pics/coresmall/kcs_nochannel.png create mode 100644 data/pics/coresmall/kcs_none.png create mode 100644 data/pics/coresmall/kcs_notaway.png create mode 100644 data/pics/coresmall/kcs_notifyoffline.png create mode 100644 data/pics/coresmall/kcs_notifyonline.png create mode 100644 data/pics/coresmall/kcs_op.png create mode 100644 data/pics/coresmall/kcs_opaway.png create mode 100644 data/pics/coresmall/kcs_options.png create mode 100644 data/pics/coresmall/kcs_ownprivmsg.png create mode 100644 data/pics/coresmall/kcs_ownprivmsgcrypted.png create mode 100644 data/pics/coresmall/kcs_package.png create mode 100644 data/pics/coresmall/kcs_parsererror.png create mode 100644 data/pics/coresmall/kcs_parserwarning.png create mode 100644 data/pics/coresmall/kcs_part.png create mode 100644 data/pics/coresmall/kcs_paste.png create mode 100644 data/pics/coresmall/kcs_play.png create mode 100644 data/pics/coresmall/kcs_plus.png create mode 100644 data/pics/coresmall/kcs_popup.png create mode 100644 data/pics/coresmall/kcs_popupmenu.png create mode 100644 data/pics/coresmall/kcs_prologue.png create mode 100644 data/pics/coresmall/kcs_proxy.png create mode 100644 data/pics/coresmall/kcs_query.png create mode 100644 data/pics/coresmall/kcs_querynotice.png create mode 100644 data/pics/coresmall/kcs_querynoticecrypted.png create mode 100644 data/pics/coresmall/kcs_queryprivmsg.png create mode 100644 data/pics/coresmall/kcs_queryprivmsgcrypted.png create mode 100644 data/pics/coresmall/kcs_querytrace.png create mode 100644 data/pics/coresmall/kcs_quit.png create mode 100644 data/pics/coresmall/kcs_quitapp.png create mode 100644 data/pics/coresmall/kcs_quitsplit.png create mode 100644 data/pics/coresmall/kcs_raw.png create mode 100644 data/pics/coresmall/kcs_rawevent.png create mode 100644 data/pics/coresmall/kcs_raweventnohandlers.png create mode 100644 data/pics/coresmall/kcs_record.png create mode 100644 data/pics/coresmall/kcs_redsquare.png create mode 100644 data/pics/coresmall/kcs_refresh.png create mode 100644 data/pics/coresmall/kcs_regusers.png create mode 100644 data/pics/coresmall/kcs_restore.png create mode 100644 data/pics/coresmall/kcs_retry.png create mode 100644 data/pics/coresmall/kcs_rose.png create mode 100644 data/pics/coresmall/kcs_saycolors.png create mode 100644 data/pics/coresmall/kcs_sayicon.png create mode 100644 data/pics/coresmall/kcs_saykvs.png create mode 100644 data/pics/coresmall/kcs_saysmile.png create mode 100644 data/pics/coresmall/kcs_screenshot.png create mode 100644 data/pics/coresmall/kcs_scriptaction.png create mode 100644 data/pics/coresmall/kcs_scriptcenter.png create mode 100644 data/pics/coresmall/kcs_search.png create mode 100644 data/pics/coresmall/kcs_server.png create mode 100644 data/pics/coresmall/kcs_servererror.png create mode 100644 data/pics/coresmall/kcs_serverinfo.png create mode 100644 data/pics/coresmall/kcs_servernotice.png create mode 100644 data/pics/coresmall/kcs_serverping.png create mode 100644 data/pics/coresmall/kcs_servnotice.png create mode 100644 data/pics/coresmall/kcs_sharedfiles.png create mode 100644 data/pics/coresmall/kcs_showdoubleview.png create mode 100644 data/pics/coresmall/kcs_showlistview.png create mode 100644 data/pics/coresmall/kcs_shy.png create mode 100644 data/pics/coresmall/kcs_slurp.png create mode 100644 data/pics/coresmall/kcs_smile.png create mode 100644 data/pics/coresmall/kcs_socketerror.png create mode 100644 data/pics/coresmall/kcs_socketmessage.png create mode 100644 data/pics/coresmall/kcs_socketwarning.png create mode 100644 data/pics/coresmall/kcs_sound.png create mode 100644 data/pics/coresmall/kcs_spam.png create mode 100644 data/pics/coresmall/kcs_split.png create mode 100644 data/pics/coresmall/kcs_spy.png create mode 100644 data/pics/coresmall/kcs_ssl.png create mode 100644 data/pics/coresmall/kcs_stats.png create mode 100644 data/pics/coresmall/kcs_statusbar.png create mode 100644 data/pics/coresmall/kcs_surprised1.png create mode 100644 data/pics/coresmall/kcs_surprised2.png create mode 100644 data/pics/coresmall/kcs_systemerror.png create mode 100644 data/pics/coresmall/kcs_systemmessage.png create mode 100644 data/pics/coresmall/kcs_systemwarning.png create mode 100644 data/pics/coresmall/kcs_tearsmile.png create mode 100644 data/pics/coresmall/kcs_terminal.png create mode 100644 data/pics/coresmall/kcs_textencoding.png create mode 100644 data/pics/coresmall/kcs_textexclamative.png create mode 100644 data/pics/coresmall/kcs_textpoints.png create mode 100644 data/pics/coresmall/kcs_theme.png create mode 100644 data/pics/coresmall/kcs_themeoptions.png create mode 100644 data/pics/coresmall/kcs_tilewindows.png create mode 100644 data/pics/coresmall/kcs_time.png create mode 100644 data/pics/coresmall/kcs_tongue.png create mode 100644 data/pics/coresmall/kcs_tongue2.png create mode 100644 data/pics/coresmall/kcs_toolbar.png create mode 100644 data/pics/coresmall/kcs_topic.png create mode 100644 data/pics/coresmall/kcs_transfer.png create mode 100644 data/pics/coresmall/kcs_transparent.png create mode 100644 data/pics/coresmall/kcs_treetaskbar.png create mode 100644 data/pics/coresmall/kcs_ugly.png create mode 100644 data/pics/coresmall/kcs_unban.png create mode 100644 data/pics/coresmall/kcs_undock.png create mode 100644 data/pics/coresmall/kcs_unhandled.png create mode 100644 data/pics/coresmall/kcs_unlocked.png create mode 100644 data/pics/coresmall/kcs_unlockedoff.png create mode 100644 data/pics/coresmall/kcs_unrecognized.png create mode 100644 data/pics/coresmall/kcs_url.png create mode 100644 data/pics/coresmall/kcs_userlist.png create mode 100644 data/pics/coresmall/kcs_userop.png create mode 100644 data/pics/coresmall/kcs_useropaway.png create mode 100644 data/pics/coresmall/kcs_userwindow.png create mode 100644 data/pics/coresmall/kcs_violetsquare.png create mode 100644 data/pics/coresmall/kcs_voice.png create mode 100644 data/pics/coresmall/kcs_voiceaway.png create mode 100644 data/pics/coresmall/kcs_wallops.png create mode 100644 data/pics/coresmall/kcs_who.png create mode 100644 data/pics/coresmall/kcs_whoischannels.png create mode 100644 data/pics/coresmall/kcs_whoisidle.png create mode 100644 data/pics/coresmall/kcs_whoisother.png create mode 100644 data/pics/coresmall/kcs_whoisserver.png create mode 100644 data/pics/coresmall/kcs_whoisuser.png create mode 100644 data/pics/coresmall/kcs_world.png create mode 100644 data/pics/coresmall/kcs_xy.png create mode 100644 data/pics/coresmall/kcs_yellowsquare.png create mode 100644 data/pics/kvi_actiondrawer.png create mode 100644 data/pics/kvi_activitymeter.png create mode 100644 data/pics/kvi_bigicon_actioneditor.png create mode 100644 data/pics/kvi_bigicon_actions.png create mode 100644 data/pics/kvi_bigicon_addons.png create mode 100644 data/pics/kvi_bigicon_aliaseditor.png create mode 100644 data/pics/kvi_bigicon_cascadewindows.png create mode 100644 data/pics/kvi_bigicon_channellist.png create mode 100644 data/pics/kvi_bigicon_channels.png create mode 100644 data/pics/kvi_bigicon_channelspopup.png create mode 100644 data/pics/kvi_bigicon_codetester.png create mode 100644 data/pics/kvi_bigicon_connected.png create mode 100644 data/pics/kvi_bigicon_connecting.png create mode 100644 data/pics/kvi_bigicon_disconnected.png create mode 100644 data/pics/kvi_bigicon_eventeditor.png create mode 100644 data/pics/kvi_bigicon_folder.png create mode 100644 data/pics/kvi_bigicon_help.png create mode 100644 data/pics/kvi_bigicon_helpback.png create mode 100644 data/pics/kvi_bigicon_helpclose.png create mode 100644 data/pics/kvi_bigicon_helpforward.png create mode 100644 data/pics/kvi_bigicon_helpindex.png create mode 100644 data/pics/kvi_bigicon_helpsearch.png create mode 100644 data/pics/kvi_bigicon_identity.png create mode 100644 data/pics/kvi_bigicon_irccontextdisplay.png create mode 100644 data/pics/kvi_bigicon_keyboard.png create mode 100644 data/pics/kvi_bigicon_kvircwww.png create mode 100644 data/pics/kvi_bigicon_kvs.png create mode 100644 data/pics/kvi_bigicon_mailinglist.png create mode 100644 data/pics/kvi_bigicon_minimizeallwindows.png create mode 100644 data/pics/kvi_bigicon_networklinks.png create mode 100755 data/pics/kvi_bigicon_newirccontext.png create mode 100755 data/pics/kvi_bigicon_nickpopup.png create mode 100644 data/pics/kvi_bigicon_nokeyboard.png create mode 100644 data/pics/kvi_bigicon_open.png create mode 100644 data/pics/kvi_bigicon_pack.png create mode 100644 data/pics/kvi_bigicon_popupeditor.png create mode 100755 data/pics/kvi_bigicon_quit.png create mode 100644 data/pics/kvi_bigicon_raweditor.png create mode 100644 data/pics/kvi_bigicon_regusers.png create mode 100644 data/pics/kvi_bigicon_remove.png create mode 100644 data/pics/kvi_bigicon_save.png create mode 100644 data/pics/kvi_bigicon_screenshot.png create mode 100644 data/pics/kvi_bigicon_separator.png create mode 100644 data/pics/kvi_bigicon_server.png create mode 100644 data/pics/kvi_bigicon_servers.png create mode 100644 data/pics/kvi_bigicon_settings.png create mode 100755 data/pics/kvi_bigicon_socketspy.png create mode 100644 data/pics/kvi_bigicon_theme.png create mode 100644 data/pics/kvi_bigicon_themeoptions.png create mode 100644 data/pics/kvi_bigicon_tilewindows.png create mode 100644 data/pics/kvi_bigicon_toolbareditor.png create mode 100644 data/pics/kvi_bigicon_tools.png create mode 100644 data/pics/kvi_bigicon_trashcan.png create mode 100755 data/pics/kvi_bigicon_unknown.png create mode 100644 data/pics/kvi_bigicon_usermode.png create mode 100644 data/pics/kvi_bigicon_www.png create mode 100644 data/pics/kvi_checkbox_selected.png create mode 100644 data/pics/kvi_checkbox_unselected.png create mode 100755 data/pics/kvi_horizontal_left.png create mode 100755 data/pics/kvi_horizontal_right.png create mode 100644 data/pics/kvi_icon_bot.png create mode 100644 data/pics/kvi_icon_female.png create mode 100644 data/pics/kvi_icon_male.png create mode 100755 data/pics/kvi_icon_refresh.png create mode 100644 data/pics/kvi_setup_label.png create mode 100644 data/pics/kvi_setup_theme_hires.png create mode 100644 data/pics/kvi_setup_theme_lowres.png create mode 100644 data/pics/kvi_splash.png create mode 100644 data/pics/kvi_splash_overlay.png create mode 100755 data/pics/kvi_toolbutton_menuindicator.png create mode 100644 data/pics/kvi_userchanstate.png create mode 100644 data/protocols/Makefile.am create mode 100644 data/protocols/irc.protocol create mode 100644 data/protocols/irc6.protocol create mode 100644 data/resources/Makefile.am create mode 100644 data/resources/icon1.ico create mode 100644 data/resources/kvirc.rc create mode 100644 data/resources/resource.h create mode 100644 data/resources_mac/Info.plist.in create mode 100644 data/resources_mac/Makefile.am create mode 100644 data/resources_mac/kvirc.icns (limited to 'data') diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 00000000..1d329f15 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,6 @@ +############################################################################### +# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek +############################################################################### + +SUBDIRS = applnk config defscript deftheme doctemplates \ +helppics icons man mimelnk msgcolors pics protocols resources resources_mac diff --git a/data/applnk/Makefile.am b/data/applnk/Makefile.am new file mode 100644 index 00000000..cf7c6f3d --- /dev/null +++ b/data/applnk/Makefile.am @@ -0,0 +1,5 @@ +tmpdir = $(applnkdir) + +tmp_DATA = kvirc.desktop + +EXTRA_DIST = $(tmp_DATA) diff --git a/data/applnk/kvirc.desktop b/data/applnk/kvirc.desktop new file mode 100644 index 00000000..0b531899 --- /dev/null +++ b/data/applnk/kvirc.desktop @@ -0,0 +1,18 @@ +[Desktop Entry] +BinaryPattern= +GenericName=IRC Client +Comment=Connect to Internet Relay Chat +MimeType=application/x-kva;application/x-kvt +Exec=kvirc -m %u +Icon=kvirc +MapNotify=true +Name=KVIrc 3 +SwallowExec= +SwallowTitle= +Terminal=false +TerminalOptions= +Path= +Type=Application +X-KDE-SubstituteUID=false +X-KDE-Username= +X-KDE-StartupNotify=true diff --git a/data/config/Makefile.am b/data/config/Makefile.am new file mode 100644 index 00000000..4b41fbd9 --- /dev/null +++ b/data/config/Makefile.am @@ -0,0 +1,5 @@ +tmpdir = $(configdir) + +tmp_DATA = serverdb.kvc texticons.kvc + +EXTRA_DIST = $(tmp_DATA) diff --git a/data/config/serverdb.kvc b/data/config/serverdb.kvc new file mode 100644 index 00000000..f1c6266a --- /dev/null +++ b/data/config/serverdb.kvc @@ -0,0 +1,1611 @@ +# KVIrc configuration file + +[Accessirc] +0_Hostname=irc.accessirc.net +0_Description=Accessirc:%20Random%20server +NServers=1 +[Acestar] +0_Hostname=irc.acestar.org +0_Description=Acestar:%20Random%20server +NServers=1 +[Action-IRC] +0_Hostname=irc.action-irc.net +0_Description=Action-IRC:%20Random%20server +NServers=1 +[AlternativeNet] +0_Hostname=irc.altnet.org +0_Description=Alternativenet:%20Random%20server +NServers=1 +[Afternet] +0_Hostname=irc.afternet.org +0_Description=Afternet:%20Random%20server +NServers=1 +[Anothernet] +0_Hostname=irc.another.net +0_Description=AnotherNet:%20Random%20server +NServers=1 +[ArabChat] +0_Hostname=irc.arabchat.org +0_Description=ArabChat:%20Random%20server +NServers=1 +[AsiaTalk] +0_Hostname=irc.asiatalk.org +0_Description=AsiaTalk:%20Random%20server +NServers=1 +[AstroLink] +0_Hostname=irc.astrolink.org +0_Description=AstroLink:%20Random%20server +NServers=1 +[Asylumnet] +0_Hostname=irc.asylum-net.org +0_Description=Asylumnet:%20Random%20server +NServers=1 +[Austnet] +0_Hostname=au.austnet.org +0_Description=Austnet:%20Random%20AU%20server +1_Hostname=nz.austnet.org +1_Description=Austnet:%20Random%20NZ%20server +2_Hostname=sg.austnet.org +2_Description=Austnet:%20Random%20SG%20server +3_Hostname=us.austnet.org +3_Description=Austnet:%20Random%20US%20server +NServers=4 +[AwesomeChat] +0_Hostname=irc.awesomechat.net +0_Description=AwesomeChat:%20Random%20server +NServers=1 +[Axenet] +0_Hostname=irc.axenet.org +0_Description=Axenet:%20Random%20server +NServers=1 +[Azzurra] +0_Hostname=irc.azzurra.org +0_Description=Main%20Random%20Server +1_Hostname=atlantis.azzurra.org +1_Description=HUB%20Routing%20Server +2_Hostname=twilight.azzurra.org +2_Description=HUB%20Routing%20Server +3_Hostname=vogon.azzurra.org +3_Description=HUB%20Routing%20Server +4_Hostname=b-network.azzurra.org +4_Description=B-Network%20Leaf%20Server +5_Hostname=caltanet.azzurra.org +5_Description=Caltanet%20Leaf%20Server +6_Hostname=cheapnet.azzurra.org +6_Description=Cheapnet%20Leaf%20Server +7_Hostname=libero.azzurra.org +7_Description=Libero%20Leaf%20Server +8_Hostname=oltrelinux.azzurra.org +8_Description=Oltrelinux%20Leaf%20Server +9_Hostname=nexlab.azzurra.org +9_Description=Nexlab%20Leaf%20Server +10_Hostname=penguin.azzurra.org +10_Description=Penguin%20Leaf%20Server +11_Hostname=radiomarte.azzurra.org +11_Description=RadioMarte%20Leaf%20Server +12_Hostname=sashimi.azzurra.org +12_Description=Sashimi%20Leaf%20Server +13_Hostname=sbrize.azzurra.org +13_Description=Sbrize%20Leaf%20Server +14_Hostname=tin.azzurra.org +14_Description=Tin%20Leaf%20Server +15_Hostname=unina.azzurra.org +15_Description=Unina%20Leaf%20Server +16_Hostname=wmgitalia.azzurra.org +16_Description=WMG%20Leaf%20Server +17_Hostname=fastweb.azzurra.org +17_Description=Fastweb%20Routing%20Server +18_Hostname=gamma.azzurra.org +18_Description=Gamma%20Fastweb%20Server +19_Hostname=orion.azzurra.org +19_Description=Orion%20Fastweb%20Server +20_Hostname=ssitalia.azzurra.org +20_Description=SSItalia%20Fastweb%20Server +21_Hostname=stealth.azzurra.org +21_Description=Stealth%20Fastweb%20Server +22_Hostname=irc6.azzurra.org +22_Description=IPv6%20Routing%20Server +23_Hostname=itgate.azzurra.org +23_Description=ITgate%20IPv6%20Server +24_Hostname=ngnet.azzurra.org +24_Description=Ngnet%20IPv6%20Server +NServers=25 +Description=Italian%20Main%20Network +[Beirut] +0_Hostname=irc.beirut.com +0_Description=Random%20server +1_Hostname=us.beirut.com +1_Description=Random%20US%20server +2_Hostname=eu.beirut.com +2_Description=Random%20EU%20server +3_Hostname=downtown.beirut.com +3_Description=Fullerton +4_Hostname=verdun.beirut.com +4_Description=Chicago +5_Hostname=hamra.beirut.com +5_Description=New%20York +6_Hostname=achrafieh.beirut.com +6_Description=Hamburg +7_Hostname=port.beirut.com +7_Description=London +8_Hostname=sinelfil.beirut.com +8_Description=Frankfurt +9_Hostname=irc.dikt.no +9_Description=Oslo +NServers=10 +[Beyondirc] +0_Hostname=irc.beyondirc.net +0_Description=BeyondIRC:%20Random%20server +NServers=1 +[Bitlbee] +0_Hostname=im.bitlbee.org +0_Description=InterLAB%20BV,%20Netherlands +1_Hostname=im.uk.bitlbee.org +1_Description=SSInternet,%20UK +2_Hostname=im.starkast.net +2_Description=TeleFortress,%20Sweden +3_Hostname=bitlbee.hensema.net +3_Description=HostingXS,%20Amsterdam +4_Hostname=im.okkernoot.net +4_Description=Almere,%20Netherlands +5_Hostname=im.fr.bitlbee.org +5_Description=ProXad,%20France +6_Hostname=im.sixxs.net +6_Description=SixXS,%20Netherlands +7_Hostname=bitlbee.extreme-players.de +7_Description=Global%20Access,%20Germany +8_Hostname=irc2im.picasa.hu +8_Description=Hungary,%20Budapest +9_Hostname=bitlbee.salooo.org +9_Description=Berlin,%20Germany +NServers=10 +Description=IRC%20%3C--%3E%20MSN%20gateway +[Blabbernet] +0_Hostname=irc.blabber.net +0_Description=Blabbernet:%20Random%20server +NServers=1 +[Blitzed] +0_Hostname=irc.blitzed.org +0_Description=Blitzed:%20Random%20server +NServers=1 +[Brasilchat] +0_Hostname=irc.brasilchat.org +0_Description=Brasilchat:%20Random%20server +NServers=1 +[Brasirc] +0_Hostname=irc.brasirc.net +0_Description=Brasirc:%20Random%20server +1_Hostname=irc.libnet.com.br +1_Description=Brasirc:%20BR,%20PA,%20Belem +2_Hostname=irc.matrix.net.br +2_Description=Brasirc:%20BR,%20SC,%20Florianopolis +NServers=3 +[Brasnet] +0_Hostname=irc.brasnet.org +0_Description=Brasnet:%20Random%20server +1_Hostname=eu.brasnet.org +1_Description=Brasnet:%20Random%20European%20server +2_Hostname=us.brasnet.org +2_Description=Brasnet:%20Random%20US%20server +NServers=3 +[Bulgaria] +0_Hostname=irc.bulgaria.org +0_Description=Bulgaria:%20Random%20server +NServers=1 +[CCnet] +0_Hostname=irc.cchat.net +0_Description=CCnet:%20Random%20server +1_Hostname=irc2.cchat.net +1_Description=CCnet:%20US,%20TX,%20Dallas +NServers=2 +[Chat-Net] +0_Hostname=irc.chat-net.org +0_Description=Chat-Net:%20Random%20server +NServers=1 +[ChatArea] +0_Hostname=irc.chatarea.net +0_Description=ChatArea:%20Random%20server +NServers=1 +[Chatcafe] +0_Hostname=irc.chatcafe.net +0_Description=Chatcafe:%20Random%20server +NServers=1 +[ChatCentral2] +0_Hostname=irc.cc2.org +0_Description=ChatCentral2:%20Random%20server +NServers=1 +[ChatCircuit] +0_Hostname=irc.chatcircuit.com +0_Port=6668 +0_Description=ChatCircuit:%20Random%20server +NServers=1 +[ChatFactory] +0_Hostname=irc.chatfactory.net +0_Description=ChatFactory:%20Random%20server +1_Hostname=power.chatfactory.net +1_Description=ChatFactory:%20Brussels,%20EU +NServers=2 +[Chatlink] +0_Hostname=irc.chatlink.org +0_Description=Chatlink:%20Random%20server +NServers=1 +[Chatnet] +0_Hostname=au.chatnet.org +0_Description=Chatnet:%20Random%20AU%20server +1_Hostname=eu.chatnet.org +1_Description=Chatnet:%20Random%20EU%20server +2_Hostname=us.chatnet.org +2_Description=Chatnet:%20Random%20US%20server +NServers=3 +[ChatPR] +0_Hostname=irc.chatpr.org +0_Description=ChatPR:%20Random%20server +NServers=1 +[Chatpinoy] +0_Hostname=irc.chatpinoy.com +0_Description=Chatpinoy:%20Random%20server +NServers=1 +[Chatroom] +0_Hostname=irc.chatroom.org +0_Description=Chatroom:%20Random%20server +NServers=1 +[Chatsolutions] +0_Hostname=irc.chatsolutions.org +0_Description=Chatsolutions:%20Random%20server +NServers=1 +[Chatster] +0_Hostname=irc.chatster.org +0_Description=Chatster:%20Random%20server +NServers=1 +[ChatX] +0_Hostname=irc.chatx.net +0_Description=ChatX:%20Random%20server +NServers=1 +[CNN] +0_Hostname=chat.cnn.com +0_Description=CNN:%20CNN%20News%20discussions +NServers=1 +[Coolchat] +0_Hostname=irc.coolchat.net +0_Description=Coolchat:%20Random%20server +NServers=1 +[Criten] +0_Hostname=irc.criten.net +0_Description=Criten:%20Random%20server +NServers=1 +[Cyberchat] +0_Hostname=irc.cyberchat.org +0_Description=Cyberchat:%20Random%20server +NServers=1 +[CyGanet] +0_Hostname=irc.cyga.net +0_Description=CyGanet:%20Random%20server +NServers=1 +[DALnet] +0_Hostname=irc.dal.net +0_Description=Main%20Random%20Server +1_Hostname=as.dal.net +1_Description=Asia%20Random%20Server +2_Hostname=hotspeed.sg.as.dal.net +2_Description=Singapore%20Server +3_Hostname=mesra.kl.my.dal.net +3_Description=Malaysia%20Server +4_Hostname=ca.dal.net +4_Description=Canada%20Random%20Server +5_Hostname=maple.ix.ca.dal.net +5_Description=Maple%20Server +6_Hostname=toronto.on.ca.dal.net +6_Description=Toronto%20Server +7_Hostname=eu.dal.net +7_Description=Europe%20Random%20Server +8_Hostname=arcor.de.eu.dal.net +8_Description=Germany%20Server +9_Hostname=brain.hub.eu.dal.net +9_Description=HUB%20Server +10_Hostname=gaston.se.eu.dal.net +10_Description=Sweden%20Server +11_Hostname=genesis-r.uk.eu.dal.net +11_Description=UK%20Server +12_Hostname=matrix.de.eu.dal.net +12_Description=Germany%20Server +13_Hostname=mozilla.se.eu.dal.net +13_Description=Sweden%20Server +14_Hostname=powertech.no.eu.dal.net +14_Description=Norway%20Server +15_Hostname=waffle.ix.eu.dal.net +15_Description=Waffle%20Server +16_Hostname=us.dal.net +16_Description=USA%20Random%20Server +17_Hostname=aeon.nj.us.dal.net +17_Description=USA%20Server +18_Hostname=broadway.ny.us.dal.net +18_Description=USA%20Server +19_Hostname=hollywood.ix.us.dal.net +19_Description=USA%20Server +20_Hostname=jade.va.us.dal.net +20_Description=USA%20Server +21_Hostname=jingo.ix.us.dal.net +21_Description=USA%20Server +22_Hostname=loyalty.ix.us.dal.net +22_Description=USA%20Server +23_Hostname=masters.ix.us.dal.net +23_Description=USA%20Server +24_Hostname=novel.fl.us.dal.net +24_Description=USA%20Server +25_Hostname=punch.va.us.dal.net +25_Description=USA%20Server +26_Hostname=rangers.ix.us.dal.net +26_Description=USA%20Server +27_Hostname=redemption.ix.us.dal.net +27_Description=USA%20Server +28_Hostname=riga-r.ca.us.dal.net +28_Description=USA%20Server +29_Hostname=rumble.fl.us.dal.net +29_Description=USA%20Server +30_Hostname=serenity.ix.us.dal.net +30_Description=USA%20Server +31_Hostname=soho.ix.us.dal.net +31_Description=USA%20Server +32_Hostname=swiftco.wa.us.dal.net +32_Description=USA%20Server +NServers=33 +[Darkfire] +0_Hostname=irc.darkfire.net +0_Description=Darkfire:%20Random%20server +NServers=1 +[Darkfyre] +0_Hostname=irc.darkfyre.net +0_Description=Darkfyre:%20Random%20server +NServers=1 +[DarkMyst] +0_Hostname=irc.darkmyst.org +0_Description=DarkMyst:%20Random%20server +NServers=1 +[DarkServ] +0_Hostname=irc.darkserv.net +0_Description=DarkServ:%20Random%20server +NServers=1 +[Darktree] +0_Hostname=irc.darktree.net +0_Description=Darktree:%20Random%20server +NServers=1 +[Deepspace] +0_Hostname=irc.deepspace.org +0_Description=Deepspace:%20Disability%20network +NServers=1 +[Different] +0_Hostname=irc.different.net +0_Description=Different:%20Random%20server +NServers=1 +[Digarix] +0_Hostname=irc.digarix.net +0_Description=Digarix:%20Random%20server +NServers=1 +[Digatech] +0_Hostname=irc.digatech.net +0_Description=Digatech:%20Random%20server +NServers=1 +[Digitalirc] +0_Hostname=irc.digitalirc.net +0_Description=Digitalirc:%20Random%20server +NServers=1 +[Discussioni] +0_Hostname=irc.discussioni.org +0_Description=Discussioni%20random%20server +1_Hostname=ipv6.discussioni.org +1_Description=Experimental%20IPv6%20Server +1_Port=5776 +2_Hostname=Bolzano1.IT.Discussioni.Org +2_Description=Blozano1 +3_Hostname=Bolzano2.IT.Discussioni.Org +3_Description=Bolzano2 +4_Hostname=Chieti.IT.Discussioni.Org +4_Description=SSL%20ready%20server +4_Port=9999 +4_SSL=true +5_Hostname=Milano.IT.Discussioni.Org +5_Description=Milano +5_Port=6669 +6_Hostname=Roma.IT.Discussioni.Org +6_Description=Roma +6_Port=6669 +7_Hostname=Roma2.IT.Discussioni.Org +7_Description=Roma2 +7_Port=6668 +8_Hostname=Torino.IT.Discussioni.Org +8_Description=Torino +8_Port=6669 +NServers=9 +Description=Italian%20Network +[Dobbernet] +0_Hostname=irc.dobber.net +0_Description=Dobbernet:%20Random%20server +NServers=1 +[DogmNet] +0_Hostname=irc.dogm.net +0_Description=Main%20network%20server +1_Hostname=irc.rovno.ua +1_Description=Main%20UA%20server +2_Hostname=irc.chat.uz +2_Description=Main%20UZ%20server +NServers=3 +Description=Russian%20Network +Encoding=CP-1251 +[DragonLynk] +0_Hostname=irc.dragonlynk.net +0_Description=DragonLynk:%20Random%20server +NServers=1 +[Dreamcast] +0_Hostname=irc0.dreamcast.com +0_Description=Dreamcast:%20Random%20server +NServers=1 +[Dreamnet] +0_Hostname=irc.dreamnet.org +0_Description=Dreamnet:%20Random%20server +NServers=1 +[Dwarfstar] +0_Hostname=irc.dwarfstar.net +0_Description=DwarfStar:%20Random%20server +NServers=1 +[Dynastynet] +0_Hostname=irc.dynastynet.net +0_Description=Dynastynet:%20Random%20server +NServers=1 +[EFnet] +0_Hostname=irc.efnet.org +0_Description=Main%20Random%20Server +1_Hostname=irc.efnet.ca +1_Description=Canada%20Random%20Server +2_Hostname=irc.arcti.ca +2_Description=Calgary%20Server +3_Hostname=efnet.teleglobe.net +3_Description=Montreal%20Server +4_Hostname=irc.dks.ca +4_Description=Toronto%20Server +5_Hostname=ircd.arcti.ca +5_Description=Calgary%20HUB%20Server +6_Hostname=irc.igs.ca +6_Description=Toronto%20Server +7_Hostname=irc.efnet.eu +7_Description=Europe%20Random%20Server +8_Hostname=irc.dkom.at +8_Description=Vienna%20Server +9_Hostname=irc.efnet.pl +9_Description=Warsaw%20Server +10_Hostname=efnet.ipv6.xs4all.nl +10_Description=Amsterdam%20IPv6%20Server +11_Hostname=irc.du.se +11_Description=Borlange%20Server +12_Hostname=efnet.cs.hut.fi +12_Description=Helsinki%20Server +13_Hostname=irc.inter.net.il +13_Description=Tel%20Aviv%20Server +14_Hostname=irc.inet.tele.dk +14_Description=Aarhus%20Server +15_Hostname=irc.ipv6.inter.net.il +15_Description=Tel%20Aviv%20IPv6%20Server +16_Hostname=irc.homelien.no +16_Description=Oslo%20IPv6%20Server +17_Hostname=ircd.efnet.no +17_Description=Oslo%20HUB%20Server +18_Hostname=efnet.xs4all.nl +18_Description=Amsterdam%20Server +19_Hostname=hub.il +19_Description=EFnet%20Israel%20HUB%20Server +20_Hostname=irc.efnet.ru +20_Description=Moscow%20Server +21_Hostname=irc.efnet.no +21_Description=Oslo%20Server +22_Hostname=irc.daxnet.no +22_Description=Oslo%20Server +23_Hostname=irc.efnet.fr +23_Description=Paris%20Server +24_Hostname=hub.se +24_Description=EFnet%20Sweden%20HUB%20Server +25_Hostname=hub.efnet.nl +25_Description=EFnet%20Netherlands%20HUB%20Server +26_Hostname=irc.ac.za +26_Description=South%20Africa%20IPv6%Server +27_Hostname=efnet.port80.se +27_Description=Stockholm%20IPv6%20Server +28_Hostname=irc.dataphone.se +28_Description=Stockholm%20Server +29_Hostname=irc.efnet.nl +29_Description=Ede%20Server +30_Hostname=efnet.demon.co.uk +30_Description=London%20Server +31_Hostname=hub.uk +31_Description=EFnet%20UK%20HUB%20Server +32_Hostname=hub.dk +32_Description=EFnet%20Denmark%20HUB%20Server +33_Hostname=irc.pte.hu +33_Description=Pecs%20Server +34_Hostname=irc.efnet.us +34_Description=USA%20Random%20Server +35_Hostname=irc.colosolutions.net +35_Description=Orlando%20Server +36_Hostname=irc.umich.edu +36_Description=Ann%20Arbor%20Server +37_Hostname=irc.desync.com +37_Description=Tampa%20Server +38_Hostname=irc.easynews.com +38_Description=Phoenix%20Server +39_Hostname=chat.efnet.org +39_Description=Chicago%20Server +40_Hostname=irc.servercentral.net +40_Description=Chicago%20Server +41_Hostname=ircd.he.net +41_Description=Fremont%20HUB%20Server +42_Hostname=irc.umn.edu +42_Description=Minneapolis%20Server +43_Hostname=irc.mzima.net +43_Description=Los%20Angeles%20Server +44_Hostname=irc.eversible.com +44_Description=Miami%20Server +45_Hostname=ircd.desync.com +45_Description=Tampa%20HUB%20Server +46_Hostname=irc.SHOUTcast.com +46_Description=Dulles%20Server +47_Hostname=irc.vel.net +47_Description=Los%20Angeles%20Server +48_Hostname=irc.ptptech.com +48_Description=Ashburn%20IPv6%20Server +49_Hostname=hub.efnet.us +49_Description=USA%20HUB%20Server +50_Hostname=irc2.choopa.net +50_Description=New%20York%20Server +51_Hostname=ircd.llnw.net +51_Description=Phoenix%20HUB%20Server +52_Hostname=irc.blackened.com +52_Description=Phoenix%20Server +53_Hostname=irc.choopa.net +53_Description=New%20York%20IPv6%20Server +54_Hostname=ircd.nac.net +54_Description=New%20York%20HUB%20Server +55_Hostname=irc.nac.net +55_Description=New%20York%20Server +56_Hostname=ircd.choopa.net +56_Description=New%20York%20HUB%20Server +57_Hostname=irc.blessed.net +57_Description=Maitland%20Server +58_Hostname=irc.prison.net +58_Description=San%20Francisco%20Server +59_Hostname=irc.wh.verio.net +59_Description=Reston%20Server +60_Hostname=irc.mindspring.com +60_Description=Atlanta%20Server +61_Hostname=irc.he.net +61_Description=Fremont%20Server +NServers=62 +[EgyptianIRC] +0_Hostname=irc.egyptianirc.net +0_Description=EgyptianIRC:%20Random%20server +NServers=1 +[Eleethal] +0_Hostname=irc.eleethal.com +0_Description=Eleethal:%20Random%20server +NServers=1 +[EnterTheGame] +0_Hostname=irc.enterthegame.com +0_Description=EntertheGame:%20Random%20server +NServers=1 +[Escaped] +0_Hostname=irc.escaped.net +0_Description=Escaped:%20Random%20server +NServers=1 +[Esprit] +0_Hostname=irc.esprit.net +0_Description=Esprit:%20Random%20server +NServers=1 +[euIRC] +0_Hostname=irc.euirc.net +0_Description=euIRC:%20Random%20server +NServers=1 +[EuropNet] +0_Hostname=irc.europnet.org +0_Description=EuropNet round robin +1_Hostname=irc.free.fr +1_Description=Free irc server +2_Hostname=irc.librenet.net +2_Description=Librenet network server +3_Hostname=irc.global-irc.net +3_Description=Global-irc server +NServers=4 +Description=French%20Network +[ExodusIRC] +0_Hostname=irc.exodusirc.net +0_Description=ExodusIRC:%20Random%20server +NServers=1 +[FDFnet] +0_Hostname=irc.fdf.net +0_Description=FDFnet:%20Random%20server +NServers=1 +[FEFnet] +0_Hostname=irc.fef.net +0_Description=FEFnet:%20Random%20server +NServers=1 +[Forestnet] +0_Hostname=irc.forestnet.org +0_Description=Forestnet:%20Random%20server +NServers=1 +[FreedomChat] +0_Hostname=chat.freedomchat.net +0_Description=FreedomChat:%20Random%20server +NServers=1 +[Freenode] +0_Hostname=irc.freenode.org +0_Description=Main Freenode router +1_Hostname=chat.ap.freenode.net +1_Description=Main%20Asia-Pacific%20router +2_Hostname=tolkien.freenode.net +2_Description=Taoyuan,%20Taiwan +3_Hostname=chat.au.freenode.net +3_Description=Main%20Australia%20router +4_Hostname=asimov.freenode.net +4_Description=Brisbane,%20Australia +5_Hostname=chat.eu.freenode.net +5_Description=Main%20Europe%20router +6_Hostname=kornbluth.freenode.net +6_Description=Frankfurt,%20Germany +7_Hostname=orwell.freenode.net +7_Description=Helsinki,%20Finland +8_Hostname=sterling.freenode.net +8_Description=Hoofddorp,%20Netherland +9_Hostname=calvino.freenode.net +9_Description=Milano,%20Italy +10_Hostname=adams.freenode.net +10_Description=Oslo,%20Norway +11_Hostname=gibson.freenode.net +11_Description=Oslo,%20Norway +12_Hostname=leguin.freenode.net +12_Description=Umea,%20Sweden +13_Hostname=lem.freenode.net +13_Description=Moscow,%20Russia +14_Hostname=pratchett.freenode.net +14_Description=London,%20United%20Kingdom +15_Hostname=ipv6.chat.eu.freenode.net +15_Description=Main%20Europe%20IPv6%20router +16_Hostname=goethe.freenode.net +16_Description=Hoofddorp,%20Netherland +17_Hostname=calkins.freenode.net +17_Description=Milano,%20Italy +18_Hostname=crichton.freenode.net +18_Description=Oslo,%20Norway +19_Hostname=chat.us.freenode.net +19_Description=Main%20USA%20router +20_Hostname=einstein.freenode.net +20_Description=Corvallis,%20OR,%20USA +21_Hostname=niven.freenode.net +21_Description=Corvallis,%20OR,%20USA +22_Hostaname=zelazny.freenode.net +22_Description=Corvallis,%20OR,%20USA +23_Hostname=zahn.freenode.net +23_Description=Corvallis,%20OR,%20USA +24_Hostname=brown.freenode.net +24_Description=Madison,%20WI,%20USA +25_Hostname=anthony.freenode.net +25_Description=Irvine,%20CA,%20USA +NServers=26 +Description=The%20FOSS%20Network +[FunNet] +0_Hostname=irc.funnet.org +0_Description=FunNet:%20Random%20server +NServers=1 +[GalaxyNet] +0_Hostname=irc.galaxynet.org +0_Description=Galaxynet:%20Random%20server +1_Hostname=auckland.nz.galaxynet.org +1_Description=Galaxynet:%20AU,%20NZ,%20Auckland +2_Hostname=freei.us.galaxynet.org +2_Description=Galaxynet:%20US,%20WA,%20Seattle +3_Hostname=gymnet.us.galaxynet.org +3_Description=Galaxynet:%20US,%20FL,%20Florida +4_Hostname=online.be.galaxynet.org +4_Description=Galaxynet:%20EU,%20BE,%20Online +5_Hostname=vltmedia.se.galaxynet.org +5_Description=Galaxynet:%20EU,%20SE,%20Vltmedia +NServers=6 +[Gamesnet] +0_Hostname=east.gamesnet.net +0_Description=Gamesnet:%20Random%20east%20US%20server +1_Hostname=west.gamesnet.net +1_Description=Gamesnet:%20Random%20west%20US%20server +NServers=2 +[Gameznet] +0_Hostname=irc.gameznet.com +0_Description=Gameznet:%20Random%20server +NServers=1 +[GizNet] +0_Hostname=irc.giznet.com +0_Description=GizNet:%20Random%20server +NServers=1 +[Globalchat] +0_Hostname=irc.globalchat.org +0_Description=Globalchat:%20Random%20server +NServers=1 +[GRnet] +0_Hostname=srv.irc.gr +0_Description=Grnet:%20Random%20server +1_Hostname=gr.irc.gr +1_Description=Grnet:%20Random%20EU%20server +2_Hostname=us.irc.gr +2_Description=Grnet:%20Random%20US%20server +NServers=3 +[HabberNet] +0_Hostname=irc.habber.net +0_Description=HabberNet:%20Random%20server +NServers=1 +[HanIRC] +0_Hostname=irc.hanirc.org +0_Description=HanIRC:%20Random%20server +NServers=1 +[Hellenicnet] +0_Hostname=irc.mirc.gr +0_Description=Hellenicnet:%20Random%20server +NServers=1 +[Hybnet] +0_Hostname=irc.hybnet.net +0_Description=Hybnet:%20Random%20server +NServers=1 +[ICQnet] +0_Hostname=irc.icq.com +0_Description=ICQnet:%20Random%20server +NServers=1 +[Infatech] +0_Hostname=irc.infatech.net +0_Description=Infatech:%20Random%20server +NServers=1 +[Infinity] +0_Hostname=irc.infinity-irc.org +0_Description=Infinity:%20Random%20server +NServers=1 +[Infomatrix] +0_Hostname=irc.infomatrix.net +0_Description=Infomatrix:%20Random%20server +NServers=1 +[IRC.by] +0_Hostname=irc.by +0_Description=Random%20server +NServers=1 +Description=The%20Biggest%20Belarus%20Network +Encoding=CP-1251 +[IRC-Hispano] +0_Hostname=irc.irc-hispano.org +0_Description=IRC-Hispano:%20Random%20server +NServers=1 +Description=Spanish%20Network +[IRCGnet] +0_Hostname=irc.ircgnet.net +0_Description=IRCGNet:%20Main%20service +1_Hostname=irc.ircgnet.net +1_Description=IRCGNet:%20SSL%20service +1_Port=6697 +2_Hostname=ops.ircgnet.net +2_Description=IRCGnet:%20Alternate%20service +NServers=3 +[IRChat] +0_Hostname=irc.irchat.net +0_Description=IRChat:%20Random%20server +NServers=1 +[IRChat-br] +0_Hostname=irc.irchat.com.br +0_Description=IRChat-br:%20Random%20server +NServers=1 +[IRCItalia] +0_Hostname=cagliari.ircitalia.net +0_Description=IRCItalia%20network +1_Hostname=campania.italiachat.net +1_Description=ItaliaChat%20network +2_Hostname=cosenza.ircitalia.net +2_Description=IRCItalia%20network +3_Hostname=lazio.italiachat.net +3_Description=ItaliaChat%20network%20main%20server +4_Hostname=pagana.italiachat.net +4_Description=Pagana%20IPv6%20server%20(SSL%20ready) +4_Port=7000 +5_Hostname=palermo.ircitalia.net +5_Description=IRCItalia%20network +6_Hostname=roma.italiachat.net +6_Description=ItaliaChat%20network +7_Hostname=trapani.ircitalia.net +7_Description=IRCItalia%20network +NServers=8 +[IRCLand] +0_Hostname=irc.ircland.org +0_Description=IRCLand%20random%20server +1_Hostname=maverick.ircland.org +1_Description=maverick +2_Hostname=power.ircland.org +2_Description=power +3_Hostname=white.ircland.org +3_Description=white +NServers=4 +[IRCLink] +0_Hostname=alesund.no.eu.irclink.net +0_Description=IRCLink:%20EU,%20NO,%20Alesund +1_Hostname=frogn.no.eu.irclink.net +1_Description=IRCLink:%20EU,%20NO,%20Oslo +2_Hostname=rockhill.sc.us.irclink.net +2_Description=IRCLink:%20US,%20SC,%20Rock%20Hill +NServers=3 +[IRCnet] +0_Hostname=irc.ircnet.org +0_Description=Main%20Random%20Server +1_Hostname=eu.ircnet.org +1_Description=Europe%20Random%20Server +2_Hostname=ix.irc.at +2_Description=IX%20Server +3_Hostname=linz.irc.at +3_Description=Linz%20Server +4_Hostname=vienna.irc.at +4_Description=Vienna%20Server +5_Hostname=ircnet.realroot.be +5_Description=RealROOT%20Server +6_Hostname=irc.datacomm.ch +6_Description=Datacomm%20Server +7_Hostname=irc.osanet.cz +7_Description=OSANET%20Server +8_Hostname=irc.i.cz +8_Description=ICZ%20Server +9_Hostname=irc.felk.cvut.cz +9_Description=Prague%20Server +10_Hostname=irc.leo.org +10_Description=LEO%20Server +11_Hostname=irc.belwue.de +11_Description=BelWue%20Server +12_Hostname=irc.freenet.de +12_Description=Freenet%20Server +13_Hostname=uni-erlangen.de +13_Description=University%20Of%20Nurnberg%20Server +14_Hostname=uni-karlsruhe.de +14_Description=University%20Of%20Karlsruhe%20Server +15_Hostname=tu-ilmenau.de +15_Description=University%20Of%20Ilmenau%20Server +16_Hostname=fu-berlin.de +16_Description=University%20Of%20Berlin%20Server +17_Hostname=irc.estpak.ee +17_Description=Elion%20Server +18_Hostname=irc.datanet.ee +18_Description=Linxtelecom%20Server +19_Hostname=irc.starman.ee +19_Description=Starman%20Server +20_Hostname=irc.opoy.fi +20_Description=Oulu%20Telephone%20Server +21_Hostname=irc.cs.hut.fi +21_Description=University%20Of%20Helsinki%20Server +22_Hostname=irc.elisa.fi +22_Description=Elisa%20Oyj%20Server +23_Hostname=irc.utu.fi +23_Description=University%20Of%20Turku%20Server +24_Hostname=irc.song.fi +24_Description=TDC%20Song%20Server +25_Hostname=irc1.inet.fi +25_Description=iNET%20Server +26_Hostname=irc.oulu.fi +26_Description=University%20Of%20Olutensin%20Server +27_Hostname=irc.jyu.fi +27_Description=University%20Of%20Jyvaskyla%20Server +28_Hostname=hub.cc.tut.fi +28_Description=Tampere%20Server +29_Hostname=irc.lut.fi +29_Description=University%20Of%20Ranta%20Server +30_Hostname=irc.cc.tut.fi +30_Description=Tampere%20Server +31_Hostname=irc.oamk.fi +31_Description=OuluNet%20Server +32_Hostname=ircnet.club-internet.fr +32_Description=T-Online%20France%20Server +33_Hostname=ircnet.nerim.fr +33_Description=Nerim%20Server +34_Hostname=elte.irc.hu +34_Description=University%20Of%20Budapest +35_Hostname=atw.irc.hu +35_Description=ATW%20Server +36_Hostname=extra.irc.hu +36_Description=Extra%20Server +37_Hostname=ssl.atw.irc.hu +37_Description=ATW%20Server +38_Hostname=hub.irc.hu +38_Description=Godollo%20HUB%20Server +39_Hostname=ircnet.netvision.net.il +39_Description=NetVision%20Server +40_Hostname=irc.simnet.is +40_Description=Iceland%20Telecom%20Server +41_Hostname=irc.hi.is +41_Description=University%20Of%20Iceland%20Server +42_Hostname=ircd.simnet.is +42_Description=Iceland%20Telecom%20HUB%20Server +43_Hostname=irc1.tiscali.it +43_Description=Tiscali%20Server +44_Hostname=javairc.tiscali.it +44_Description=Tiscali%20Server +45_Hostname=javairc2.tiscali.it +45_Description=Tiscali%20Server +46_Hostname=irc.flashnet.it +46_Description=Cybernet%20Italia%20Server +47_Hostname=irc.eutelia.it +47_Description=Eutelia%20Server +48_Hostname=irc.excite.it +48_Description=Excite%20Italia%20Server +49_Hostname=irc1.tin.it +49_Description=Telecom%20Italia%20Server +50_Hostname=irc2.tin.it +50_Description=Telecom%20Italia%20Server +51_Hostname=irc3.tin.it +51_Description=Telecom%20Italia%20Server +52_Hostname=ircd.tin.it +52_Description=Telecom%20Italia%20HUB%20Server +53_Hostname=irc.huie.hokudai.ac.jp +53_Description=University%20Of%20Hokkaido +54_Hostname=irc.nara.wide.ad.jp +54_Description=WIDE%20Project%20Nara%20NOC%20Server +55_Hostname=irc.tokyo.wide.ad.jp +55_Description=WIDE%20Project%20Tokyo%20NOC%20Server +56_Hostname=irc.fujisawa.wide.ad.jp +56_Description=WIDE%20Project%20Fujisawa%20NOC%20Server +57_Hostname=irc.media.kyoto-u.ac.jp +57_Description=Kyoto%20Server +58_Hostname=irc-new.media.kyoto-u.ac.jp +58_Description=Kyoto%20Server +59_Hostname=irc.apollo.lv +59_Description=Apollo%20Server +60_Hostname=ircd.snt.utwente.nl +60_Description=University%20Of%20Twente%20HUB%20Server +61_Hostname=irc.snt.utwente.nl +61_Description=University%20Of%20Twente%20Server +62_Hostname=irc.sci.kun.nl +62_Description=University%20Of%20Nijmegen%20Server +63_Hostname=irc.uunet.nl +63_Description=UUNET%20NL%20Server +64_Hostname=irc.xs4all.nl +64_Description=XS4ALL%20Server +65_Hostname=irc.ifi.uio.no +65_Description=University%20Of%20Oslo%20Server +66_Hostname=irc.pvv.ntnu.no +66_Description=IRCNO%20Server +67_Hostname=irc.hitos.no +67_Description=Tromsoe%20Server +68_Hostname=irc.powertech.no +68_Description=PowerTech%20Server +69_Hostname=irc.uib.no +69_Description=University%20Of%20Bergen +70_Hostname=uk.ircnet.org +70_Description=UK%20Random%20Server +71_Hostname=ircnet.demon.co.uk +71_Description=THUS%20Server +72_Hostname=irc.aau.dotsrc.org +72_Description=AAU%20DotSrc%20Server +73_Hostname=irc.dotsrc.org +73_Description=DotSrc%20Server +74_Hostname=warszawa.irc.pl +74_Description=ICM%20Server +75_Hostname=poznan.irc.pl +75_Description=UAM%20Server +76_Hostname=krakow.irc.pl +76_Description=AGH%20Server +77_Hostname=lublin.irc.pl +77_Description=UMCS%20Server +78_Hostname=irc.swipnet.se +78_Description=Tele2%20Sweden%20Server +79_Hostname=irc.desync.se +79_Description=IRCnet%20Project%20Server +80_Hostname=irc.okit.se +80_Description=OK%20IT%20AB%20Server +81_Hostname=irc.ludd.luth.se +81_Description=Lulea%20Server +82_Hostname=irc.arnes.si +82_Description=ARNES%20Server +83_Hostname=irc.triera.si +83_Description=Triera%20Server +84_Hostname=irc.fei.tuke.sk +84_Description=TUKE%20Server +85_Hostname=irc.nextra.sk +85_Description=Nextra%20Server +86_Hostname=irc.seed.net.tw +86_Description=Seednet%20Server +87_Hostname=irc.freebsd.org.tw +87_Description=FreeBSD.org%20Server +88_Hostname=us.ircnet.org +88_Description=USA%20Random%20Server +89_Hostname=ircnet.choopa.net +89_Description=Choopa,%20Inc%20Server +90_Hostname=temphub.choopa.net +90_Description=Choopa,%20Inc%20Server +91_Hostname=au.ircnet.org +91_Description=Australia%20Random%20Server +92_Hostname=eu.irc6.net +92_Description=Europe%20Random%20IPv6%20Server +93_Hostname=irc.ipv6.cesnet.cz +93_Description=CESNET2%20IPv6%20Server +94_Hostname=ircs.ircnet.ee +94_Description=IPv6%20Server +95_Hostname=irc.estpak.ee +95_Description=Elion%20Enterprises%20IPv6%20Server +96_Hostname=irc.datanet.ee +96_Description=Linxtelecom%20IPv6%20Server +97_Hostname=irc.starman.ee +97_Description=Starman%20IPv6%20Server +98_Hostname=irc6.ngnet.it +98_Description=Telecom%20Italia%20IPv6%20Server +99_Hostname=irc.eutelia.it +99_Description=Eutelia%20IPv6%20Server +100_Hostname=irc.powertech.no +100_Description=PowerTech%20IPv6%20Server +NServers=101 +[Irctoo] +0_Hostname=irc.irctoo.net +0_Description=Irctoo:%20Random%20server +NServers=1 +[IRCworld] +0_Hostname=irc.ircworld.org +0_Description=IRCworld:%20Random%20server +NServers=1 +[IsraelNet] +0_Hostname=irc.israel.net +0_Description=Israelnet:%20Random%20server +NServers=1 +[K0wNet] +0_Hostname=irc.k0w.net +0_Description=K0wNet:%20Random%20server +NServers=1 +[KewlOrg] +0_Hostname=irc.kewl.org +0_Description=Kewl.org:%20Random%20server +1_Hostname=london.uk.eu.kewl.org +1_Description=Kewl.org:%20EU,%20UK,%20London +2_Hostname=nanterre.fr.eu.kewl.org +2_Description=Kewl.org:%20EU,%20FR,%20Nanterre +NServers=3 +[Kreynet] +0_Hostname=irc.krey.net +0_Description=KreyNet:%20Random%20server +NServers=1 +[Krushnet] +0_Hostname=irc.krushnet.org +0_Description=Krushnet:%20Random%20server +NServers=1 +[LagNet] +0_Hostname=irc.lagnet.org.za +0_Description=LagNet:%20Random%20server +1_Hostname=mystery.lagnet.org.za +1_Description=LagNet:%20AF,%20ZA,%20Johannesburg +2_Hostname=reaper.lagnet.org.za +2_Description=LagNet:%20AF,%20ZA,%20Cape%20Town +NServers=3 +[Librenet] +0_Hostname=irc.librenet.net +0_Description=Librenet:%20Random%20server +NServers=1 +[Lunatics] +0_Hostname=irc.lunatics.net +0_Description=Lunatics:%20Random%20server +NServers=1 +[KidsWorld] +0_Hostname=irc.kidsworld.org +0_Description=Kidsworld:%20Random%20server +NServers=1 +[Knightnet] +0_Hostname=goldengate.ca.us.knightnet.net +0_Description=Knightnet:%20US,%20CA,%20Goldengate +1_Hostname=orc.dbn.za.knightnet.net +1_Description=Knightnet:%20AF,%20ZA,%20Durban +NServers=2 +[MagicStar] +0_Hostname=irc.magicstar.net +0_Description=MagicStar:%20Random%20server +NServers=1 +[MediaDriven] +0_Hostname=irc.mediadriven.com +0_Description=MediaDriven:%20Random%20server +NServers=1 +[Messique] +0_Hostname=irc.messique.org +0_Description=Messique:%20Random%20server +NServers=1 +[Mysteria] +0_Hostname=irc.mysteria.net +0_Description=Mysteria:%20Random%20server +NServers=1 +[Mystical] +0_Hostname=irc.mystical.net +0_Description=Mystical:%20Random%20server +NServers=1 +[NdrsNet] +0_Hostname=irc.ndrsnet.com +0_Description=NdrsNet:%20Random%20server +NServers=1 +[Net-France] +0_Hostname=irc.net-france.com +0_Description=Net-France:%20Random%20server +NServers=1 +[Nevernet] +0_Hostname=irc.nevernet.net +0_Description=Nevernet:%20Random%20server +NServers=1 +[NewIRC] +0_Hostname=irc.newirc.org +0_Description=NewIRC:%20Random%20server +NServers=1 +[Newnet] +0_Hostname=irc.chelmsford.com +0_Description=Newnet:%20US,%20MA,%20Chelmsford +1_Hostname=irc.fragglerock.org +1_Description=Newnet:%20US,%20CA,%20Flagglerock +2_Hostname=irc.newnet.net +2_Description=Newnet:%20Random%20server +3_Hostname=irc.oasis-net.net +3_Description=Newnet:%20EU,%20UK,%20Oasis +4_Hostname=irc.rma.edu +4_Description=Newnet:%20US,%20VA,%20Randolph +5_Hostname=irc.trusted-network.de +5_Description=Newnet:%20EU,%20DE,%20Trusted +6_Hostname=irc.uplink.net.nz +6_Description=Newnet:%20NZ,%20Auckland +NServers=7 +[Nexusirc] +0_Hostname=irc.nexusirc.org +0_Description=Nexusirc:%20Random%20server +NServers=1 +[NightStar] +0_Hostname=irc.nightstar.net +0_Description=Nightstar:%20Random%20server +NServers=1 +[NitroNet] +0_Hostname=irc.nitro.net +0_Description=NitroNet:%20Random%20server +NServers=1 +[Novernet] +0_Hostname=irc.novernet.com +0_Description=Novernet:%20Random%20server +1_Hostname=chat.novernet.com +1_Description=Novernet:%20US,%20MN,%20Minneapolis +2_Hostname=irc.c-plusnet.com +2_Description=Novernet:%20US,%20GA,%20Augusta +NServers=3 +[Oddnet] +0_Hostname=irc.oddnet.org +0_Description=Oddnet:%20Random%20server +NServers=1 +[Othernet] +0_Hostname=irc.othernet.org +0_Description=Othernet:%20Random%20server +1_Hostname=miami.fl.us.othernet.org +1_Description=Othernet:%20US,%20FL,%20Miami +2_Hostname=stlouis.mo.us.othernet.org +2_Description=Othernet:%20US,%20MO,%20StLouis +NServers=3 +[OtherSide] +0_Hostname=irc.othersideirc.net +0_Description=Otherside:%20Random%20server +NServers=1 +[Outsiderz] +0_Hostname=irc.outsiderz.com +0_Description=Outsiderz:%20Random%20server +NServers=1 +[OzOrg] +0_Hostname=aussie.sydney.oz.org +0_Description=OzOrg:%20AU,%20Sydney +1_Hostname=chariot.adelaide.oz.org +1_Description=OzOrg:%20AU,%20Adelaide +2_Hostname=iinet.perth.oz.org +2_Description=OzOrg:%20AU,%20Perth +NServers=3 +Description=Australian%20Network +[Philchat] +0_Hostname=irc.philchat.net +0_Description=Philchat:%20Random%20server +NServers=1 +[Pinoycentral] +0_Hostname=chat.abs-cbn.com +0_Description=Pinoycentral:%20Random%20server +NServers=1 +[Planetarion] +0_Hostname=irc.planetarion.com +0_Description=Planetarion:%20Random%20server +NServers=1 +[PortalX] +0_Hostname=irc.portalx.org +0_Description=PortalX:%20Random%20server +1_Hostname=aphrodite.portalx.org +1_Description=PortalX:%20Aphrodite +2_Hostname=apollo.portalx.org +2_Description=PortalX:%20Apollo +3_Hostname=ares.portalx.org +3_Description=PortalX:%20Ares +4_Hostname=athena.portalx.org +4_Description=PortalX:%20Athena +5_Hostname=demeter.portalx.org +5_Description=PortalX:%20Demeter +6_Hostname=eos.portalx.org +6_Description=PortalX:%20Eos +7_Hostname=thor.portalx.org +7_Description=PortalX:%20Thor +8_Hostname=zeus.portalx.org +8_Description=PortalX:%20Zeus +NServers=9 +[Psionics] +0_Hostname=chat.psionics.net +0_Description=Psionics:%20CA,%20PQ,%20Montreal +NServers=1 +[PTlink] +0_Hostname=irc.ptlink.net +0_Description=PTlink:%20Random%20server +NServers=1 +[PTnet] +0_Hostname=telepac2.ptnet.org +0_Description=PTnet:%20EU,%20PT,%20Lisboa +1_Hostname=ualg.ptnet.org +1_Description=PTnet:%20EU,%20PT,%20Faro +NServers=2 +[QChat] +0_Hostname=irc.qchat.net +0_Description=QChat:%20Random%20server +NServers=1 +[QuakeNet] +0_Hostname=irc.quakenet.org +0_Description=Main%20Random%20Server +1_Hostname=irc.quakenet.eu.org +1_Description=Europe%20Random%20Server +2_Hostname=jubiigames.dk.quakenet.org +2_Description=Denmark%20Server +3_Hostname=mediatraffic.fi.quakenet.org +3_Description=Finland%20Server +4_Hostname=euroserv.fr.quakenet.org +4_Description=France%20Server +5_Hostname=splatterworld.de.quakenet.org +5_Description=Germany%20Server +6_Hostname=ign.ie.quakenet.org +6_Description=Ireland%20Server +7_Hostname=ngi.it.quakenet.org +7_Description=Italy%20Server +8_Hostname=xs4all.nl.quakenet.org +8_Description=Netherlands%20Server +9_Hostname=online.no.quakenet.org +9_Description=Norway%20Server +10_Hostname=underworld.no.quakenet.org +10_Description=Norway%20Server +11_Hostname=port80.se.quakenet.org +11_Description=Sweden%20Server +12_Hostname=stockholm.se.quakenet.org +12_Description=Sweden%20Server +13_Hostname=wineasy.se.quakenet.org +13_Description=Sweden%20Server +14_Hostname=b0rk.uk.quakenet.org +14_Description=UK%20Server +15_Hostname=blueyonder.uk.quakenet.org +15_Description=UK%20Server +16_Hostname=demon.uk.quakenet.org +16_Description=UK%20Server +17_Hostname=freddyshouse.uk.quakenet.org +17_Description=UK%20Server +18_Hostname=multiplay.uk.quakenet.org +18_Description=UK%20Server +19_Hostname=gameservers.il.us.quakenet.org +19_Description=USA%20Server +20_Hostname=gameservers.nj.us.quakenet.org +20_Description=USA%20Server +21_Hostname=netfire.tx.us.quakenet.org +21_Description=USA%20Server +22_Hostname=netfire.va.us.quakenet.org +22_Description=USA%20Server +23_Hostname=servercentral.il.us.quakenet.org +23_Description=USA%20Server +NServers=24 +[Raptornet] +0_Hostname=irc.raptornet.org +0_Description=Raptornet:%20Random%20server +NServers=1 +[Realirc] +0_Hostname=irc.realirc.org +0_Description=Realirc:%20Random%20server +NServers=1 +[Rebelchat] +0_Hostname=irc.rebelchat.org +0_Description=Rebelchat:%20Random%20server +NServers=1 +[RedeSul] +0_Hostname=irc.braznet.com.br +0_Description=RedeSul:%20BR,%20SC,%20Blumenau +1_Description=RedeSul:%20BR,%20PR,%20Maringa +1_Hostname=irc.wnet.com.br +NServers=2 +[Red-Latina] +0_Hostname=irc.red-latina.org +0_Description=Red-Latina:%20Random%20server +1_Hostname=irc.dalsom.net +1_Description=Red-Latina:%20NA,%20MX,%20SanJose +NServers=2 +[RedLatona] +0_Hostname=irc.redlatona.net +0_Description=RedLatona:%20Random%20server +NServers=1 +[Relicnet] +0_Hostname=irc.relic.net +0_Description=Relicnet:%20Random%20server +NServers=1 +[Rezosup] +0_Hostname=irc.rezosup.org +0_Description=Rezosup:%20Random%20server +NServers=1 +[Risanet] +0_Hostname=irc.risanet.com +0_Description=Risanet:%20Random%20server +NServers=1 +[Rusnet] +0_Hostname=irc.rinet.ru +0_Description=Rusnet:%20EU,%20RU,%20Moscow +1_Hostname=irc.tomsk.net +1_Description=Rusnet:%20EU,%20RU,%20Tomsk +2_Hostname=irc.primorye.ru +2_Description=Rusnet:%20EU,%20RU,%20Vladivostok +NServers=3 +Description=Russian%20Network +Encoding=CP-1251 +[Sandnet] +0_Hostname=irc.sandnet.net +0_Description=Sandnet:%20Random%20server +NServers=1 +[Scunc] +0_Hostname=irc.scunc.net +0_Description=Scunc:%20Random%20server +NServers=1 +[SexNet] +0_Hostname=irc.sexnet.org +0_Description=SexNet:%20Random%20server +NServers=1 +[ShadowFire] +0_Hostname=irc.shadowfire.org +0_Description=ShadowFire:%20Random%20server +NServers=1 +[ShadowWorld] +0_Hostname=irc.shadowworld.net +0_Description=ShadowWorld:%20Random%20server +NServers=1 +[Skyyenet] +0_Hostname=arlington.va.us.skyyenet.org +0_Description=Skyyenet:%20US,%20VA,%20Arlington +NServers=1 +[Slashnet] +0_Hostname=irc.slashnet.org +0_Description=Slashnet:%20Random%20server +NServers=1 +[SolarNet] +0_Hostname=irc.solarnet.ru +0_Description=Main%20network%20server +NServers=1 +Description=Russian%20Network +Encoding=CP-1251 +[SolidIRC] +0_Hostname=irc.solidirc.com +0_Description=SolidIRC:%20Random%20server +NServers=1 +[Sorcery] +0_Hostname=irc.sorcery.net +0_Description=Sorcerynet:%20Random%20server +1_Hostname=kechara.sorcery.net +1_Description=Sorcerynet:%20US,%20CA,%20Palo%20Alto +2_Hostname=nexus.sorcery.net +2_Description=Sorcerynet:%20EU,%20SE,%20Karlskrona +NServers=3 +[Spamnet] +0_Hostname=irc.spamnet.org +0_Description=Spamnet:%20Random%20server +NServers=1 +[StarChat] +0_Hostname=irc.starchat.net +0_Description=StarChat:%20Random%20server +1_Hostname=boomer.qld.au.starchat.net +1_Description=StarChat:%20AU,%20QLD,%20SouthernCross +2_Hostname=reality.no.eu.starchat.net +2_Description=StarChat:%20EU,%20NO,%20Asker +3_Hostname=sand.ca.us.starchat.net +3_Description=StarChat:%20US,%20CA,%20San%20Jose +NServers=4 +[StarLink] +0_Hostname=irc.starlink.org +0_Description=StarLink%20Org:%20Random%20server +NServers=1 +[StarLink-irc] +0_Hostname=irc.starlink-irc.org +0_Description=StarLink-irc:%20Random%20server +NServers=1 +[StarWars-IRC] +0_Hostname=irc.starwars-irc.net +0_Description=StarWars-IRC:%20Random%20server +NServers=1 +[Stormdancing] +0_Hostname=irc.stormdancing.net +0_Description=Stormdancing:%20Random%20server +NServers=1 +[Sub-city] +0_Hostname=irc.sub-city.net +0_Description=Sub-city:%20Random%20server +NServers=1 +[Superchat] +0_Hostname=irc.superchat.org +0_Description=Superchat:%20Random%20server +NServers=1 +[SyrolNet] +0_Hostname=irc.syrolnet.org +0_Description=SyrolNet%20round%20robin +1_Hostname=ipv6.syrolnet.org +1_Description=IPv6%20round%20robin +2_Hostname=moon.syrolnet.org +2_Description=Moon%20irc%20server +3_Hostname=phobos.syrolnet.org +3_Description=IPv6/IPv4%20server +NServers=4 +Description=Italian%20Network +[Sysopnet] +0_Hostname=irc.sysopnet.org +0_Description=Sysopnet:%20Random%20server +NServers=1 +[Techdreams] +0_Hostname=irc.techdreams.net +0_Description=Techdreams:%20Random%20server +NServers=1 +[Telstra] +0_Hostname=irc.telstra.com +0_Description=Telstra:%20Random%20server +NServers=1 +[Terra] +0_Hostname=irc.terra.cl +0_Description=Terra%20Chile +1_Hostname=irc.terra.com +1_Description=Terra%20USA +2_Hostname=irc.terra.es +2_Description=Terra%20Spain +NServers=3 +[TR-net] +0_Hostname=irc.dominet.com.tr +0_Description=TR-net:%20EU,%20TR,%20Ankara +1_Hostname=irc.teklan.com.tr +1_Description=TR-net:%20EU,%20Tr,%20Istanbul +NServers=2 +[Tri-net] +0_Hostname=irc.tri-net.org +0_Description=Tri-net:%20Random%20server +NServers=1 +[UltraIRC] +0_Hostname=irc.ultrairc.net +0_Description=UltraIRC:%20Random%20server +NServers=1 +[UnderNet] +0_Hostname=irc.undernet.org +0_Description=Main%20Random%20Server +1_Hostname=eu.undernet.org +1_Description=Europe%20Random%20Server +2_Hostname=bucharest.ro.eu.undernet.org +2_Description=Romania%20Server +3_Hostname=Carouge.ch.eu.undernet.org +3_Description=Switzerland%20Server +4_Hostname=diemen.nl.eu.undernet.org +4_Description=Netherlands%20Server +5_Hostname=ede.nl.eu.undernet.org +5_Description=Netherlands%20Server +6_Hostname=elsene.be.eu.undernet.org +6_Description=Belgium%20Server +7_Hostname=graz.at.eu.undernet.org +7_Description=Austria%20Server +8_Hostname=helsinki.fi.eu.undernet.org +8_Description=Finland%20Server +9_Hostname=lelystad.nl.eu.undernet.org +9_Description=Netherlands%20Server +10_Hostname=london.uk.eu.undernet.org +10_Description=UK%20Server +11_Hostname=london2.uk.eu.undernet.org +11_Description=UK%20Server +12_Hostname=oslo1.no.eu.undernet.org +12_Description=Norway%20Server +13_Hostname=oslo2.no.eu.undernet.org +13_Description=Norway%20Server +14_Hostname=zagreb.hr.eu.undernet.org +14_Description=Croatia%20Server +15_Hostname=us.undernet.org +15_Description=USA%20Random%20Server +16_Hostname=losangeles.ca.us.undernet.org +16_Description=USA%20Server +17_Hostname=mesa.az.us.undernet.org +17_Description=USA%20Server +18_Hostname=newyork.ny.us.undernet.org +18_Description=USA%20Server +NServers=19 +[UnderZ] +0_Hostname=irc.underz.org +0_Description=UnderZ:%20Random%20server +NServers=1 +[UnionLatina] +0_Hostname=irc.unionlatina.org +0_Description=UnionLatina:%20Random%20server +NServers=1 +[Univers] +0_Hostname=irc.univers.org +0_Description=Univers:%20Random%20server +NServers=1 +[Vidgamechat] +0_Hostname=irc.vidgamechat.com +0_Description=Vidgamechat:%20Random%20server +NServers=1 +[Vitamina] +0_Hostname=irc-rr.vitamina.ca +0_Description=Vitamina:%20Random%20server +NServers=1 +[Orange/Voila] +0_Hostname=chat14.x-echo.com +0_Description=Chat14 server +NServers=1 +Description=French%20Orange/Voila%20network%20(old%20name:%20Wanadoo/Voila) +[Warpednet] +0_Hostname=irc.warped.net +0_Description=Warpednet:%20Random%20server +NServers=1 +[Webnet] +0_Hostname=irc.webchat.org +0_Description=Webnet:%20Random%20server +1_Hostname=greennet.ma.us.webchat.org +1_Description=Webnet:%20US,%20MA,%20Boston +2_Hostname=webmaster.ca.us.webchat.org +2_Description=Webnet:%20US,%20CA,%20Santa%20Clara +3_Hostname=wiregrass.al.us.webchat.org +3_Description=Webnet:%20US,%20AL,%20Dothan +NServers=4 +[WeNet] +0_Hostname=irc.wenet.ru +0_Description=Primary%20WeNet%20server +NServers=1 +Encoding=CP-1251 +Description=Russian%20Network +[WorldIRC] +0_Hostname=irc.worldirc.org +0_Description=WorldIRC:%20Random%20server +NServers=1 +[Xevion] +0_Hostname=irc.xevion.net +0_Description=Xevion:%20Random%20server +NServers=1 +[XNet] +0_Hostname=irc.xnet.org +0_Description=XNet:%20Random%20server +NServers=1 +[XWorld] +0_Hostname=irc.xworld.org +0_Description=XWorld:%20Random%20server +NServers=1 +[ZAnetNet] +0_Hostname=lia.zanet.net +0_Description=ZAnet%20Net:%20AF,%20ZA,%20CI%20(lia) +1_Hostname=timewiz.zanet.net +1_Description=ZAnet%20Net:%20AF,%20ZA,%20MWeb%20(timewiz) +NServers=2 +[ZAnetOrg] +0_Hostname=ethereal.zanet.org.za +0_Description=ZAnet%20Org:%20AF,%20ZA,%20Midrand%20(ethereal) +1_Hostname=gaspode.zanet.org.za +1_Description=ZAnet%20Org:%20AF,%20ZA,%20Cape%20Town%20(gaspode) +2_Hostname=is.zanet.org.za +2_Description=ZAnet%20Org:%20AF,%20ZA,%20Johannesburg%20(is) +NServers=3 +[ZiRC] +0_Hostname=irc.zirc.org +0_Description=ZiRC:%20Random%20server +NServers=1 +[ZUHnet] +0_Hostname=irc.zuh.net +0_Description=ZUHnet:%20Random%20server +NServers=1 +[Zurna] +0_Hostname=irc.zurna.net +0_Description=Zurna:%20Random%20server +NServers=1 +[PenguinFriends] +0_Hostname=irc.penguinfriends.org +0_Description=PenguinFriends:%20Random%20server +1_Hostname=pf-gaming.penguinfriends.org +1_Description=pf-gaming.penguinfriends.org +2_Hostname=onlyfreaks.penguinfriends.org +2_Description=onlyfreaks.penguinfriends.org +3_Hostname=irc.penguinfriends.org +3_Description=PenguinFriends:%20Random%20server SSL +3_SSL=true +3_Port=6670 +NServers=4 diff --git a/data/config/texticons.kvc b/data/config/texticons.kvc new file mode 100644 index 00000000..09d45c82 --- /dev/null +++ b/data/config/texticons.kvc @@ -0,0 +1,39 @@ +[Manager] +# Default configuration of texticons. +# If you add any entry then please increase this number both here +# and in kvi_texticonmanager.cpp (they MUST match) +ConfigUpdate=3 +[TextIcons] +smile=94 +sad=95 +heart=214 +irc=208 +bomb=82 +spy=109 +home=107 +heartbreak=215 +rose=216 +biggrin=217 +smileglasses=218 +surprise=219 +idea=148 +penguin=111 +linux=111 +flower=124 +love=214 +lol=217 +exclamation=220 +!=220 +dots=221 +...=221 +?=49 +question=49 +kiss=222 +finger=268 +prrr=265 +time=93 +shy=271 +oooh=223 +cafe=273 +hum=282 +slurp=283 diff --git a/data/defscript/Makefile.am b/data/defscript/Makefile.am new file mode 100644 index 00000000..768c9b8f --- /dev/null +++ b/data/defscript/Makefile.am @@ -0,0 +1,11 @@ +tmpdir = $(defscriptdir) + +tmp_DATA = default.kvs \ + aliases.kvs \ + events.kvs \ + popups.kvs \ + toolbars.kvs \ + installer.kvs \ + theme-install.kvs + +EXTRA_DIST = $(tmp_DATA) diff --git a/data/defscript/aliases.kvs b/data/defscript/aliases.kvs new file mode 100644 index 00000000..5d8d7299 --- /dev/null +++ b/data/defscript/aliases.kvs @@ -0,0 +1,706 @@ +# Default aliases file + +# +# TODO: +# ignore, notify and unignore should go in the core +# +# If possible, get rid of $str.* from the default popups +# avoiding to load the module at every channel popup open action... +# (Find a core function that retrieves the number of nicknames passed ?) +# Another solution would be to increase the str.module core lock-time ? +# + +# +# Backward compatibility stuff +# +alias(avatar) +{ + # avatar target file + if(!$0) + { + echo "Missing target, no action taken" + return + } + if($1) + { + avatar.set $1 + } + avatar.notify $0 +} + +alias(clear) +{ + window.clearOutput +} + +alias(connect) +{ + objects.connect $0 $1 $2 $3 +} + +alias(disconnect) +{ + objects.disconnect $0 $1 $2 $3 +} + +alias(killclass) +{ + objects.killclass $0 +} + +alias(clearobjects) +{ + objects.clear $0 +} + +alias(nickserv) +{ + # Silent + raw -q NickServ $0- +} + +alias(chanserv) +{ + # Silent + raw -q ChanServ $0- +} + +alias(memoserv) +{ + # Silent + raw -q MemoServ $0- +} + +alias(ns) +{ + # Silent + raw -q nickserv $0- +} + +alias(cs) +{ + # Silent + raw -q chanserv $0- +} + +alias(ms) +{ + # Silent + raw -q memoserv $0- +} + +alias(gnotice) +{ + # Global notice + + #Check null notice + if(!$0){ + echo $tr("Usage"): /gnotice [-waohvq] <$tr("message")> + echo $tr("-m: send a message instead of a notice") + echo $tr("-w: send notice to all channel owners") + echo $tr("-a: send notice to all channel admins") + echo $tr("-o: send notice to all channel ops") + echo $tr("-h: send notice to all channel halfops") + echo $tr("-v: send notice to all channel voices") + echo $tr("-q: quiet mode") + halt + } + + # Detect message type + if($sw(m)) %cmd="msg" + else %cmd="notice" + + # Check for quiet message + if($sw(q)) %cmd=$str.append(%cmd," -q") + + # Check null switches + if((!$sw(w))&&(!$sw(a))&&(!$sw(o))&&(!$sw(h))&&(!$sw(v))){ + eval %cmd $chan.name($active) $0- + halt + } + + # Check switches passed + if($sw(w)) eval %cmd \~$chan.name($active) $0- + if($sw(a)) eval %cmd \!$chan.name($active) $0- + if($sw(o)) eval %cmd \@$chan.name($active) $0- + if($sw(h)) eval %cmd \%$chan.name($active) $0- + if($sw(v)) eval %cmd \+$chan.name($active) $0- +} + +alias(wallop) +{ + if(!$0){ + echo $tr("Usage"): /wallop <$tr("message")> + halt + } + + # Due to server flood, timing may be very high + echo -w=$active $tr("Sending wallop to") $chan.name($active) + timer(wallop,5000,$chan.users(,,o),$0-){ + if(%:localOps == ""){ %:localOps = $chan.users(,,o); %:curIndex = 0; } + if(%:curIndex == %:localOps[]#){ killtimer wallop; return; } + + for(%i=0;%i<1;%i++){ + if(%:localOps[%:curIndex] != $my.nick){ + if(%:curIndex == %:localOps[]#){ killtimer wallop; return; } + msg -q %:localOps[%:curIndex] $1- + %:curIndex++ + } + } + } +} + +alias(kill){ + raw -q kill $0 :$1- +} + +alias(ms) +{ + # Silent + quote ms $0- +} + +# j: This is a really common one +alias(j) +{ + #first we do a test if a chan is given as parameter + if(!$0) + { + echo $tr("Usage:") + echo " /j " + } else { + join $0- + } +} + +# s: This too +alias(s) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /s " + } else { + server $0- + } +} + +# q: Ok, I am lazy :P +alias(q) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /q " + } else { + query $0- + } +} + + +# names: maybe this should be implemented on the core? +alias(names) +{ + if(!$0) + { + if($window.type($active)!="channel") + { + echo $tr("Usage:") "/names " + } else { + raw names $active + } + } else { + raw names $0- + } +} + +# kickban +alias(kb) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /kb [" $tr("reason") "]" + halt; + } + + if(!$channel) + { + echo "[KB]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + %mask = $mask(%nick,$option(uintDefaultBanType)); + + if(!%mask)%mask = %nick; # plain ban + + %reason = $1- + #if(!%reason)%reason = "You're not welcome here!" + + # This is tricky : we send everything + # as a single raw message just because + # we do not want delays between kick and ban + # if anti-server-flood is enabled + + %raw = "kick $target %nick :%reason" + + # kick %nick %reason + + if($chan.isOp(%nick))%raw2 = "mode $target -o+b %nick %mask" + else %raw2 = "mode $target +b %mask" + + raw -q %raw2$cr$lf%raw + } + } +} + +# chanowner +alias(chanowner) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /chanowner " + halt; + } + if(!$channel) + { + echo "[CHANOWNER]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() +q %nick + } + } +} + +# chanadmin +alias(chanadmin) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /chanadmin " + halt; + } + if(!$channel) + { + echo "[CHANADMIN]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() +a %nick + } + } +} + +# dechanowner +alias(dechanowner) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /dechanowner " + halt; + } + if(!$channel) + { + echo "[DECHANOWNER]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() -q %nick + } + } +} + +# dechanadmin +alias(dechanadmin) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /dechanadmin " + halt; + } + if(!$channel) + { + echo "[DECHANADMIN]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() -a %nick + } + } +} + +# halfop +alias(halfop) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /halfop " + halt; + } + if(!$channel) + { + echo "[HALFOP]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() +h %nick + } + } +} + +# dehalfop +alias(dehalfop) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /dehalfop " + halt; + } + if(!$channel) + { + echo "[DEHALFOP]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() -h %nick + } + } +} + +# userop +alias(userop) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /userop " + halt; + } + if(!$channel) + { + echo "[USEROP]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() +u %nick + } + } +} + +# deuserop +alias(deuserop) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /deuserop " + halt; + } + if(!$channel) + { + echo "[DEUSEROP]: " $tr("This is not a channel window") + halt; + } + + foreach(%nick,$str.split(",",$0)) + { + if(%nick) + { + mode $chan.name() -u %nick + } + } +} + +# ame and amsg +alias(ame) +{ + foreach(%i,$window.list(channel))if(%i!="") me -r=%i $0- +} + +alias(amsg) +{ + foreach(%i,$window.list(channel))msg $target(%i) $0- +} + +alias(amsgall) +{ + foreach(%i,$window.list(channel),$window.list(query))msg $target(%i) $0- +} + +alias(ameall) +{ + foreach(%i,$window.list(channel),$window.list(query)){ + if(%i!="") me -r=%i $0- + } +} + +alias(awayall) +{ + foreach(%w,$window.list(console,all))away -r=%w $0-; +} + +# notify: this is a bit more complex +# We want to add an user to the notify list with a single command +# The notify lists are handled thru the registered users database +alias(notify) +{ + # This one adds a registered users database entry + # For the specified nick and uses the specified mask + # If no mask is specified , a default one is constructed + # Then the "notify" property is set for the user + + if(!$0) + { + echo $tr("Usage:") + echo " /notify [mask]" + halt + } + + # Get the mask + + %mask = $1 + + # no mask specified ? build it + + if(!%mask)%mask = $0!*@* + + # Now add the user (but do not replace old entries) + + reguser.add -f -q $0 %mask + + # Merge the notify property part with the old one (if any) + + %oldNicks = $reguser.property($0,notify) + + # It would be a good idea to check if the nikckname is already in the %oldNicks list + # but this is left as exercise for the reader. + + %oldNicks << $0 + + # And finally set the property (use -n so the notify lists will be restarted) + + reguser.setproperty -n $0 notify $0 + + # done...the notify list should be restarted now +} + +alias(ignore) +{ + # This one adds a registered users database entry + # For the specified nick and uses the specified mask + # If no mask is specified , a default one is constructed + # Then the "ignore" property is set for the user to 1 + + if(!$0) + { + echo $tr("Usage:") + echo " /ignore [-r] " + halt + } + + # Now add the user (but do not replace old entries) + + reguser.add $0 $mask($0,15); + + # And finally set the property (use -n so the notify lists will be restarted) + # Check if ignore or unignore the user + + if(!$sw(r,remove)) + { + reguser.setIgnoreEnabled $0 1 + reguser.setIgnoreFlags -p -c -n -t -i -d $0 + } else reguser.setIgnoreEnabled $0 0 +} + +# Dcc...people commonly use "dcc send" instead of "dcc.send" +alias(dcc) +{ + switch($0) + { + case(send): + { + dcc.send $1- + break + } + case(chat): + { + dcc.chat $1- + break + } + case(voice): + { + dcc.voice $1- + break + } + case(allow): + { + quote dccallow $1- + break + } + default: + { + echo "[DCC]: " $tr("Unsupported type: $0") + } + } +} + +# +# return a string with the name of the curerent usermode +# +alias(usermodename) +{ + if(!$0) + { + echo $tr("Usage:") + echo " /usermodename " + halt; + } + if(!$channel) + { + echo "[USERMODENAME]: " $tr("This is not a channel window") + halt; + } + + if($chan.isOwner($0,$channel)){ + return $tr("Channel Owner") + } elseif($chan.isAdmin($0,$channel)){ + return $tr("Channel Administrator") + } elseif($chan.isOp($0,$channel)){ + return $tr("Channel Operator") + } elseif($chan.isHalfOp($0,$channel)){ + return $tr("Half Operator") + } elseif($chan.isVoice($0,$channel)){ + return $tr("Voice") + } elseif($chan.isUserOp($0,$channel)){ + return $tr("User Operator") + } else { + return $tr("Normal User") + } +} + +alias(dccallow) +{ + quote dccallow \+$0 +} + +#shortcut for commonly called algorithm +alias(md5) +{ + return $str.digest($0-,md5) +} + +alias(sha1) +{ + return $str.digest($0-,sha1) +} + +# DNS : people like it +alias(dns) +{ + if(!$context) + { + echo "[DNS]: " $tr("You must use DNS in an IRC context") + halt + } + + if(!$server) + { + echo "[DNS]: " $tr("You must be connected to a server") + halt + } + + if(!$0) + { + echo $tr("Usage:") + echo echo " /dns " + halt + } + + if($isWellKnown($0))host -a $hostname($0) + else { + awhois($0) + { + if(!$2) + { + echo "[DNS]: " $tr("No such user: $0") + } else { + host -a $2 + } + } + } +} + +alias(ss) +{ + # Silent + quote ss $0- +} + +alias(seenserv) +{ + # Silent + msg -q SeenServ $0- +} + +alias(hs) +{ + #Silent + quote hs $0- +} + +alias(hop) +{ + // Retrieve channel + %chan=$0 + if(!%chan) %chan=$chan.name($active) + + // Retrieve channel key + %key=$chan.key($channel(%chan)) + + // Exit channel + if($window.type($channel(%chan))=="channel") + part --keep %chan $option(stringPartMessage) + + // Rejoin channel + if(!%key) join %chan + else join %chan %key +} diff --git a/data/defscript/default.kvs b/data/defscript/default.kvs new file mode 100644 index 00000000..fb270da6 --- /dev/null +++ b/data/defscript/default.kvs @@ -0,0 +1,37 @@ +################################################################################################# +# +# This is the default script for KVIrc +# Feel free to use it as base for writing your own scripts +# It is a good starting point; I have tried to add as many comments as possible. +# +# Have fun :) +# Szymon Stefanek +# +################################################################################################# + +%mypath = "$file.extractpath($0)$file.ps" + +# Fetch default scripts data +include "aliases.kvs" %mypath +include "events.kvs" %mypath +include "popups.kvs" %mypath +include "toolbars.kvs" %mypath + +# +# Set the default spam words...(for the anti-spam) detector +# + +# FIXME: these should be MERGED!!!! + +#%tmp = $option(stringlistSpamWords) +#%tmp[] = $array() ??? + +option stringlistSpamWords "http:","#","www.","auto","query","ftp:","sex","free","msg","chat","dynamirc","script" + +options.save + +echo $tr("The default script has been successfully installed.") +echo $tr("To connect to a server, type /server ") +echo "---" +echo $tr("Happy ircing :)") +echo "- Szymon Stefanek $tr("and the KVIrc Development Team")" diff --git a/data/defscript/events.kvs b/data/defscript/events.kvs new file mode 100644 index 00000000..575cfc39 --- /dev/null +++ b/data/defscript/events.kvs @@ -0,0 +1,105 @@ +# Default events file + +event(OnDccChatPopupRequest,default) +{ + popup dccchat $0; +} + +event(OnChannelPopupRequest,default) +{ + popup channeltextview $target; +} + +event(OnConsolePopupRequest,default) +{ + popup consoletextview; +} + +event(OnChannelLinkPopupRequest,default) +{ + if($0 != "") popup channelpopup $0; +} + +event(OnQueryPopupRequest,default) +{ + if($target) popup querytextview $target; +} + +event(OnQueryNickPopupRequest,default) +{ + if($0 != "") popup querytextview $0; +} + +event(OnQueryFileDropped,default) +{ + if($0 != "") dcc.send $target $0; +} + +event(OnNickLinkDefaultActionRequest,default) +{ + if($0 != "") whois $0; +} + +event(OnNickLinkPopupRequest,default) +{ + if($0 != "") popup defaulttextview $0; +} + +event(OnNotifyListDefaultActionRequest,default) +{ + if($0 != "") + { + query $0; whois $0 $0; + } +} + +event(OnNotifyListPopupRequest,default) +{ + if($0 != "") popup defaulttextview $0; +}; + +event(OnWindowPopupRequest,default) +{ + popup windowpopup; +} + +event(OnChannelWindowCreated,default) +{ + button(w,Logging,119,Logging) + { + popup -p=$0,$1 logging; + } +} + +event(OnQueryWindowCreated,default) +{ + button(w,Logging,119,Logging) + { + popup -p=$0,$1 logging; + } +} + +event(OnChannelNickLinkClick,default) +{ + if($0 != "") window.insertInInputText $window $0$option(stringNickCompletionPostfix); +} + +event(OnChannelNickPopupRequest,default) +{ + if($0 != "") popup channel $0; +} + +event(OnChannelNickDefaultActionRequest,default) +{ + if(!$isEmpty($0)) query $0; +} + +event(OnURLLinkPopupRequest,URL popup) +{ + popup urlpopup $0 +} + +event(OnHostLinkPopupRequest,default) +{ + popup hostpopup $0; +} diff --git a/data/defscript/installer.kvs b/data/defscript/installer.kvs new file mode 100644 index 00000000..f974b7ed --- /dev/null +++ b/data/defscript/installer.kvs @@ -0,0 +1,169 @@ +/* + A helper class for installing and parsing files, + and generating an uninstallation alias on the fly. + + Example : + include "utils/installer.kvs" + %installer = $new(installer,0,myinstaller) + %installer->$copyFiles(pics,*.png,$file.localdir(pics)) + %installer->$includeFiles(src,*.kvs) + %installer->generateUninstallAlias("foo::uninstall") + delete %installer + Here, "foo::uninstall" must be called in you uninstall + callback script. + + Warnings: + 1) Declaration of aliases, popups, etc, in source files + (.kvs) must be in a similar format + as when you export them directly from kvirc. + Example: + alias(myalias) + defpopup(mypopup) + 2) If you use a "defpopup -m" to add an item to an + existing popup,this item won't be registered + automatically for uninstallation by this installer script. + You should typically identify the item you added using + the "id" parameter. See this example where the id is + "myaddon::myitem": + defpopup -m (channeltextview) + { + item(MyItem)(myaddon::myitem) + { + ... + } + } + Then, you add this line to you uninstall callback + script: + delpopupitem channeltextview myaddon::myitem +*/ +class(installer,object) +{ + constructor() + { + } + + copyFiles($0 = source dir,$1 = file regexp,$2 = target dir) + { + if(!$file.exists($0))return + if($isempty($0)) + { + echo $tr("[Installer] The first argument to \%installer->\$copyfiles must be a source directory") + halt + } + + if($isempty($1)) + { + echo $tr("[Installer] The second argument to \%installer->\$copyfiles must be a file name or file regexp") + halt + } + + if($isempty($2)) + { + echo $tr("[Installer] The third argument to \%installer->\$copyfiles must be a destination directory") + halt + } + + if($file.exists($0)) + { + %files = $file.ls($file.fixpath($0),f,$1) + if($length(%files)) + { + @$mkdir($2) + foreach(%file,%files) + { + $this->%lFiles <+ $str.replace($file.fixpath("$2/%file"),"\\\\","\\") + file.copy -o $file.fixpath($0/%file) $file.fixpath($2/%file) + } + } + } + } + + // Recursive creation of directory + mkdir($0 = directory) + { + if($isempty($0) || $file.exists($0)) return + foreach -a (%subdir,$str.split("/",$file.fixpath($0))) + { + %p <+ %subdir + %path = $str.join("/",%p) + if(!$file.exists(%path)) + file.mkdir -q %path + } + if(!$file.exists($0)) + { + echo $tr("[Installer] Failed to create directory") \"$0\" + return + } + } + + // Parse source files and get what will need to be uninstalled + includeFiles($0 = dir, $1 = file regexp) + { + if($isempty($0)) + { + echo $tr("[Installer] The first argument to \%installer->\$includefiles must be a source directory") + halt + } + + @$mkdir($0) + + if($1 == "") + %szRe = "*.kvs" + else + %szRe = $1 + + %files = $file.ls($file.fixpath($0),f,$1) + if($length(%files)) + { + foreach(%file,%files) + { + $this->%lSources <+ $str.replace($file.fixpath("$0/%file"),"\\\\","\\") + include $file.fixpath("$0/%file") + } + } + } + + + generateUninstallAlias($0 = alias name) + { + %c = "alias($0)$lf" + %c .= "{$lf" + if($isset($this->%lFiles)) + { + foreach(%file,$this->%lFiles) + { + %file =~ s/"^$file.localdir()/(.*)$"/"\$file.localdir(\\1)"/ + %c .= " file.remove -q \"%file\"$lf"; + } + } + if($isset($this->%lSources)) + { + foreach(%file,$this->%lSources){ + foreach(%line,$file.readlines(%file)) + if(!$str.isempty(%line)){ + if($str.match("event(*)",%line,e)) + %c .= " event -q ("$str.token(1,"()",%line)"){}$lf" + else if($str.match("alias(*)",%line,e)) + %aliases<+$str.token(1,"()",%line) + else if($str.match("defpopup(*)",%line,e)) + %c .= " defpopup("$str.token(1,"()",%line)"){}$lf" + else if($str.match("toolbar.create * *",%line,e)) + %c .= " toolbar.destroy -q "$str.word(1,%line)"$lf" + else if($str.match("action.create* (*)",%line,e)) + %c .= " action.destroy -q "$str.replace($str.token(1,"(,)",%line),,\")"$lf" + else if($str.match("class(*)*",%line,e)) + %c .= " objects.killclass -q "$str.token(1,"(,)",%line)"$lf" + } + } + if($isset(%aliases)) + foreach(%alias,%aliases) + %c .= " alias -q (%alias){}$lf" + %c .= " alias -q ($0){}$lf" + } + %c .= "}" + eval %c + } +} + + + diff --git a/data/defscript/popups.kvs b/data/defscript/popups.kvs new file mode 100644 index 00000000..7197c923 --- /dev/null +++ b/data/defscript/popups.kvs @@ -0,0 +1,1381 @@ +# Default popups file + +# +# Here comes a nice part... +# The popups. KVIrc has a lot of events that merely ask for a popup to be shown :) +# +defpopup(highlight) +{ + prologue + { + if($0!=""){ + %:regName = $reguser.match($mask($0)) + %:beingHl = $reguser.property(%:regName,highlight) + %:beingHlTmp = $tmphighlight.ishighlighted($0) + } + } + + item($tr("Stop Highlighting (Local)")) (%:beingHlTmp && !%:beingHl) + { + tmphighlight.remove $0 + } + + item($tr("Start Highlighting (Local)")) (!%:beingHlTmp && !%:beingHl) + { + tmphighlight.add $0 + } + + popup($tr("Always Highlight")) (!%:beingHl && !%:regName) + { + item($tr("Highlight as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "") + { + reguser.add $0 $mask($0,11); reguser.setproperty $0 highlight 1; + } + + item($tr("Highlight as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "") + { + reguser.add $0 $mask($0,12); reguser.setproperty $0 highlight 1; + } + + item($tr("Highlight as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "") + { + reguser.add $0 $mask($0,13); reguser.setproperty $0 highlight 1; + } + + item($tr("Highlight as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "") + { + reguser.add $0 $mask($0,3); reguser.setproperty $0 highlight 1; + } + + item($tr("Highlight as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "") + { + reguser.add $0 $mask($0,4); reguser.setproperty $0 highlight 1; + } + + item($tr("Highlight as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "") + { + reguser.add $0 $mask($0,5); reguser.setproperty $0 highlight 1; + } + } + + item($tr("Always Highlight")) (!%:beingHl && %:regName) + { + reguser.setproperty $0 highlight 1 + } + + item($tr("Stop Highlighting")) (%:beingHl) + { + reguser.setproperty $0 highlight 0 + } +} + +defpopup(ignore) +{ + prologue + { + %:inIgnoreList = 0 + %:regName = $reguser.match($mask($0)) + %:ignLabelText = "

$0 " + if(%:regName) + { + %:inIgnoreList = $reguser.isIgnoreEnabled(%:regName); + if(%:inIgnoreList) %:ignLabelText << $tr("is being ignored") + else %:ignLabelText << $tr("is not being ignored") + + %:ignLabelText << "

" + } else { + %:ignLabelText << $tr("is not being ignored")"

" + } + } + + label(%:ignLabelText) + + item($tr("Enable Ignore"),168) (!%:inIgnoreList && %:regName) + { + reguser.setIgnoreEnabled %:regName 1; + } + + popup($tr("Ignore as..."),44) (!%:inIgnoreList) + { + item($tr("Ignore as") $0 "("$mask($0,0)")") ("$reguser.exactMatch($mask($0,0))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,0); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,1)")") ("$reguser.exactMatch($mask($0,1))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,1); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,2)")") ("$reguser.exactMatch($mask($0,2))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,2); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,3); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,4); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,5); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,6)")") ("$reguser.exactMatch($mask($0,6))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,6); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,7)")") ("$reguser.exactMatch($mask($0,7))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,7); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,8)")") ("$reguser.exactMatch($mask($0,8))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,8); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,9)")") ("$reguser.exactMatch($mask($0,9))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,9); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,10)")") ("$reguser.exactMatch($mask($0,10))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,10); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,11); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,12); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,13); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,14)")") ("$reguser.exactMatch($mask($0,14))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,14); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,15)")") ("$reguser.exactMatch($mask($0,15))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,15); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,16)")") ("$reguser.exactMatch($mask($0,16))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,16); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,17)")") ("$reguser.exactMatch($mask($0,17))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,17); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,18)")") ("$reguser.exactMatch($mask($0,18))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,18); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,19)")") ("$reguser.exactMatch($mask($0,19))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,19); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,20)")") ("$reguser.exactMatch($mask($0,20))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,20); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,21)")") ("$reguser.exactMatch($mask($0,21))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,21); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,22)")") ("$reguser.exactMatch($mask($0,22))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,22); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,23)")") ("$reguser.exactMatch($mask($0,23))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,23); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,24)")") ("$reguser.exactMatch($mask($0,24))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,24); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,25)")") ("$reguser.exactMatch($mask($0,25))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,25); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + + item($tr("Ignore as") $0 "("$mask($0,26)")") ("$reguser.exactMatch($mask($0,26))" == "") + { + if(!%:regName) reguser.add $0 $mask($0,26); + reguser.setIgnoreEnabled $0 1; + reguser.setIgnoreFlags -p -c -n -t -i -d $0; + } + } + + item($tr("Unignore"),217) (%:inIgnoreList) + { + reguser.setIgnoreEnabled %:regName 0; + } +} + +defpopup(registration) +{ + prologue + { + + # This is really smart...we are loading + # the reguser module only if this popup is being requested (the user effectively + # puts the mouse on the "Registration" item and the sub-popup is being shown) + %:regName = $reguser.match($mask($0)) + %:labelText = "

$0"; + if(%:regName) + { + %:labelText << $tr("is registered as") ": "%:regName"" + # We want to display masks here!!! + %:inNotifyList = $reguser.property(%:regName,notify); + if(%:inNotifyList)%:labelText << "
$0" $tr("is in the notify list") + %:curAvatar = $avatar.name($0); + %:defAvatar = $reguser.property(%:regName,avatar); + if(%:defAvatar)%:labelText << "
$0" $tr("has a default avatar") + %:labelText << "

" + } else { + %:labelText << $tr("is not registered")"

" + } + } + + label(%:labelText) + + item($tr("Register")"...") (!%:regName) + { + reguser.wizard $mask($0) + } + + popup($tr("Quick Registration")) (!%:regName) + { + item($tr("Register as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "") + { + reguser.add $0 $mask($0,11) + } + + item($tr("Register as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "") + { + reguser.add $0 $mask($0,12) + } + + item($tr("Register as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "") + { + reguser.add $0 $mask($0,13) + } + + item($tr("Register as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "") + { + reguser.add $0 $mask($0,3) + } + + item($tr("Register as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "") + { + reguser.add $0 $mask($0,4) + } + + item($tr("Register as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "") + { + reguser.add $0 $mask($0,5) + } + } + + item($tr("Edit Registration")"...",113) (%:regName) + { + reguser.edit "%:regName" + } + + item($tr("Unregister") %:regName) (%:regName) + { + reguser.remove "%:regName" + } + + separator + + item($tr("Add to Notify")) (%:regName && !%:inNotifyList) + { + reguser.setproperty -n "%:regName" notify $0 + } + + item($tr("Remove from Notify")) (%:regName && %:inNotifyList) + { + reguser.setproperty -n "%:regName" notify + } + + popup($tr("Avatar")) (%:regName) + { + item($tr("Choose")"...") (%:regName) + { + dialog.image(f,$tr("Choose Avatar Image File"),"","",$0,"%:regName") + { + if($0) + { + reguser.setproperty -a $2 avatar $0; + } + } + } + + item($tr("Set as Default")) (%:curAvatar && ("%:curAvatar" != "%:defAvatar")) + { + reguser.setproperty "%:regName" avatar %:curAvatar + } + + item($tr("Clear Default")) (%:defAvatar) + { + reguser.setproperty %:regName avatar + # Force the avatar to update + # if("%:curAvatar" == "")who $0 + } + } +} + +defpopup("urlpopup") +{ + item($tr("Copy To Clipboard"),259) + { + str.toClipboard $0 + } +} + +# This code adds a channel popup that accepts +# a comma separated list of nicknames as parameter (to the /popup command) + +defpopup(channel) +{ + prologue + { + # we use the extended scope variables: they are visible in the entire defpopup scope + # %:visible is the string that we will "show to the user" in the popup widget + # for multiple users the string might become long so we are going to change it in "multiple users" + %:visible = $0 + # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list + # of multiple nicknames rather than a single nick + %:multiple = 0 + # finally , set these variables + %:itemBanName = $tr("Ban") + if($str.findfirst(%:visible,",") != -1) + { + # found a comma in the $0 parameter...we have multiple nicknames + %:visible = "("$tr("Multiple Users")")" + %:multiple = 1 + %:itemBanMask = "*!user@*.host.tld" + %:itemBanNick = "nick" + } else { + %:itemBanMask = $mask(%:visible,$option(uintDefaultBanType)) + if("%:itemBanMask" == "*!*@*")%:itemBanName = $tr("&Ban") + %:itemBanNick = %:visible + } + # speed it up + + %:isMeHalfOp = $chan.isMeHalfOp() + %:isMeOp = $chan.isMeOp() + %:isMeOwner = $chan.isMeOwner() + %:isMeAdmin = $chan.isMeAdmin() + %:bCanKB = 0; + + if(%:isMeHalfOp) + { + foreach(%nick,$str.split(",",$0)) + { + if($chan.usermodelevel(%nick) <= $chan.usermodelevel($me)) + { + %:bCanKB = 1; + break; + } + } + } + } + + item("/WHOIS" %:visible "("$tr("idle time")")",75,whois_item) + { + foreach(%i,$str.split(",",$0)) + whois %i %i + } + + separator + + popup($tr("&Information"),49,"information_popup") + { + item("/WHOIS" %:visible,75,"whois_item") + { + whois $0 + } + + item(/WHOWAS %:visible,92) + { + whowas $0 + } + + item(/WHO %:visible,75) + { + who $0 + } + + separator + + item($tr("DNS for") %:visible,75) + { + foreach(%i,$str.split(",",$0))dns %i + } + + item($tr("Mask for") %:visible,75) (!%:multiple) + { + echo $mask($0,11) + } + } + + popup($tr("&Control"),9,"control_popup") (%:isMeHalfOp) + { + label($usermodename($me())) + + item($tr("O&wner") %:visible,260) (%:isMeOwner) + { + chanowner $0 + } + + item($tr("&Deowner") %:visible,261) (%:isMeOwner) + { + dechanowner $0 + } + + item($tr("&Administrator") %:visible,242) (%:isMeAdmin) + { + chanadmin $0 + } + + item($tr("&Deadministrator") %:visible,243) (%:isMeAdmin) + { + dechanadmin $0 + } + + item($tr("&Op") %:visible,34) (%:isMeOp) + { + op $0 + } + + item($tr("&Deop") %:visible,62) (%:isMeOp) + { + deop $0 + } + + item($tr("&Halfop") %:visible,174) (%:isMeOp) + { + halfop $0 + } + + item($tr("&Dehalfop") %:visible,175) (%:isMeOp) + { + dehalfop $0 + } + + item($tr("&Voice") %:visible,35) (%:isMeHalfOp) + { + voice $0 + } + + item($tr("D&evoice") %:visible,63) (%:isMeHalfOp) + { + devoice $0 + } + + separator + + item($tr("&Kick") %:visible,110) (%:bCanKB) + { + foreach(%i,$str.split(",",$0))kick %i + } + + item($tr("K&ick") %:visible $tr("With..."),110) (%:bCanKB) + { + dialog.textinput -d="$me" -i=110 ($tr("Kick Reason"),$tr("Enter a kick reason"),$tr("&Kick"),$tr("Cancel"),,$0) + { + if($0 == 0) + { + foreach(%i,$str.split(",",$2))kick %i $1 + } + } + } + + item($tr("&Ban") %:visible "("%:itemBanMask")",67) (("%:itemBanMask" != "*!*@*") && %:bCanKB) + { + ban $mask($0,$option(uintDefaultBanType)) + } + + item(%:itemBanName %:visible "("%:itemBanNick!*@*")",67) (%:bCanKB) + { + ban $0 + } + + item($tr("Kick/Ban") %:visible,110) (%:bCanKB) + { + kb $0 + } + + item($tr("Kick/Ban") %:visible $tr("With..."),110) (%:bCanKB) + { + dialog.textinput -d="$me" -i=110 ($tr("Kick/Ban Reason"),$tr("Enter a kick/ban reason"),$tr("&Kick/Ban"),$tr("Cancel"),,$0) + { + if($0 == 0) + { + kb $2 $1 + } + } + } + separator + + item($tr("Configure ban mask..."),20) + { + options.edit KviChannelAdvancedOptionsWidget + } + } + + separator + + item($tr("&Query") %:visible,47) + { + query $0 + } + + separator + + extpopup(C&TCP,ctcp,51) + + extpopup(&DCC,dcc,77) (!%:multiple) + + separator + + extpopup($tr("&Registration"),registration,111) (!%:multiple) + + extpopup($tr("&Highlight"),highlight,181) (!%:multiple) + + extpopup($tr("Ig&nore"),ignore,203) (!%:multiple) + + item($tr("Notify Avatar"),57) + { + avatar.notify $0 + } +} + +# Popup to show on right-clicking channel links +# +defpopup(channelpopup) +{ + item($tr("&Join") $0,145) + { + hop $0 + } + + item($tr("&Part") $0,40) + { + if($channel($0)) part $0 $option(stringPartMessage); + } + + separator + + item(/NAMES $0,75) + { + names $0; + } + + item(/WHO $0,75) + { + who $0; + } + separator + + item($tr("Copy Channel Address"),259) + { + str.toClipboard $chan.getUrl($0) + } + +} + +defpopup(channels) +{ + item(#KVirc,46) + { + j #KVirc + } + + item(#MDE,46) + { + j #MDE + } + + item(#kde,46) + { + j #kde + } +} + +defpopup(channeltextview) +{ + extpopup($tr("Channels"),channels,46) + + item($tr("&Join Channels..."),46) ($server) + { + if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open + } + + separator + + item($tr("&Hop") $0,145) + { + hop $0 + } + + item($tr("&Part") $0,40) + { + if($channel($0)) part $0 $option(stringPartMessage); + } + + separator + + extpopup(C&TCP,ctcp,51) + + separator + + item(/NAMES $0,75) + { + names $0; + } + + item(/WHO $0,75) + { + who $0; + } + + item($tr("Notify Avatar"),57) + { + avatar.notify $0 + } + + separator + + item($tr("Copy Channel URL to Clipboard"),259) + { + str.toClipboard $chan.getUrl + } + + item($tr("Clear Buffer"),121) + { + clear; + } + +} + +defpopup(consoletextview) +{ + label($tr("You're not connected to a server")) (!$server) + + extpopup($tr("Channels"),channels,46) + + separator + + item($tr("&Join Channels..."),46) ($server) + { + if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open + } + + popup($tr("&Information"),13) ($server) + { + item(/MOTD,30) + { + motd + } + + item(/INFO,29) + { + info + } + + item(/LUSERS,57) + { + lusers + } + + popup(/STATS,22) + { + item(d "(Debug/DNS?)") + { + stats d + } + + item($tr("l (Connections)")) + { + stats l + } + + item($tr("m (Command Usage)")) + { + stats m + } + + item($tr("o (Operators)")) + { + stats o + } + + item($tr("t (Connection stats ?)"),23) + { + stats t + } + + item($tr("u (Uptime)"),93) + { + stats u + } + + item($tr("y (y-Lines)")) + { + stats y + } + + item($tr("z (Debug Stats?)"),11) + { + stats z + } + } + + item(/TIME,93) + { + time + } + + item(/ADMIN,29) + { + admin + } + + item(/VERSION,16) + { + version + } + + item(/HELP,49) + { + raw help + } + } + + separator + + item($tr("Clear Buffer"),121) + { + clear; + } +} + +# This is a common popup , accepts a list of nicknames as parameter +defpopup(ctcp) +{ + item(PING,36) + { + ctcp $0 PING + } + + item(FINGER,53) + { + ctcp $0 FINGER + } + + item(VERSION,16) + { + ctcp $0 VERSION + } + + item(USERINFO,57) + { + ctcp $0 USERINFO + } + + item(CLIENTINFO,52) + { + ctcp $0 CLIENTINFO + } + + item(SOURCE,14) + { + ctcp $0 SOURCE + } + + item(TIME,93) + { + ctcp $0 TIME + } + + item(PAGE...,223) + { + #dialog.textinput -d="Wakeup!" ($tr("CTCP Page to") $0,$tr("Enter the message text"),$tr("Ok"),$tr("Cancel")) + dialog.textinput(CTCP Page $0,Enter the message text,&Page,Cancel,"",$0) + { + if($0 == 0)ctcp $2 PAGE $1 + } + } + + item(AVATAR,57) + { + ctcp $0 AVATAR + } +} + +defpopup(dcc) +{ + prologue + { + + if($features("SSL"))%:bHaveSSL=1 + else %:bHaveSSL=0 + } + + item($tr("Chat with") $0,78) + { + dcc.chat $0 + } + + item($tr("Reverse Chat with") $0,78) + { + dcc.chat -z $0 + } + + item($tr("Secure Chat with") $0,78) (%:bHaveSSL) + { + dcc.chat -s $0 + } + + separator + + item($tr("Send to") $0,79) + { + dcc.send $0 + } + + item($tr("Secure send to") $0,79) + { + dcc.send -s $0 + } + + item($tr("Reverse Send to") $0,79) + { + dcc.rsend -z $0 + } + + item($tr("Secure Reverse Send to") $0,79) + { + dcc.rsend -z -s $0 + } + + separator + + item($tr("TDCC Send to") $0,77) + { + dcc.send -t $0 + } + + item($tr("TDCC Reverse Send to") $0,77) + { + dcc.rsend -t $0 + } + + separator + + popup($tr("Voice Chat"),166) + { + item($tr("Default")": ADPCM 8 KHz (32 kbps)") + { + dcc.voice $0 + } + + separator + + item("ADPCM 11.025 KHz (44.1 kbps)") + { + dcc.voice -h=11025 $0 + } + + item("ADPCM 16 KHz (64 kbps)") + { + dcc.voice -h=16000 $0 + } + + item("ADPCM 22.05 KHz (88.2 kbps)") + { + dcc.voice -h=22050 $0 + } + + item("GSM 8 KHz (13.2 kbps)") + { + dcc.voice -g=gsm $0 + } + + item("GSM 11.025 KHz (18.1 kbps)") + { + dcc.voice -g=gsm -h=11025 $0 + } + + item("GSM 16 KHz (26.4 kbps)") + { + dcc.voice -g=gsm -h=16000 $0 + } + + item("GSM 22.05 KHz (36.2 kbps)") + { + dcc.voice -g=gsm -h=22050 $0 + } + + item("GSM 44.1 KHz (72.4 kbps)") + { + dcc.voice -g=gsm -h=44100 $0 + } + + item("NULL 8 KHz (128 kbps)") + { + dcc.voice -g=null $0 + } + + item("NULL 11.025 KHz (176.4 kbps)") + { + dcc.voice -g=null -h=11025 $0 + } + } +} + +defpopup(dccchat) +{ + prologue + { + + # we use the extended scope variables: they are visible in the entire defpopup scope + # %:visible is the string that we will "show to the user" in the popup widget + # for multiple users the string might become long so we are going to change it in "multiple users" + %:visible = $0 + # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list + # of multiple nicknames rather than a single nick + %:multiple = 0 + # finally , set these variables + if($str.findfirst(%:visible,",") != -1) + { + # found a comma in the $0 parameter...we have multiple nicknames + %:visible = "("$tr("Multiple Users")")" + %:multiple = 1 + } + } + + separator + + extpopup(C&TCP,ctcp,51) + + extpopup(&DCC,dcc,77) + + separator + + item($tr("Notify Avatar"),57) + { + avatar.notify $0 + } + + separator + + item($tr("Clear Buffer"),121) + { + clear + } +} + +# +# Some minimal work on the query +# A text view popup (right click on a query view) +# + +defpopup(querytextview) +{ + prologue + { + + # we use the extended scope variables: they are visible in the entire defpopup scope + # %:visible is the string that we will "show to the user" in the popup widget + # for multiple users the string might become long so we are going to change it in "multiple users" + %:visible = $0 + # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list + # of multiple nicknames rather than a single nick + %:multiple = 0 + # finally , set these variables + if($str.findfirst(%:visible,",") != -1) + { + # found a comma in the $0 parameter...we have multiple nicknames + %:visible = "("$tr("Multiple Users")")" + %:multiple = 1 + } + } + + item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple) + { + whois $0 $0 + } + + separator + + popup($tr("&Information"),49) + { + item(/WHOIS $0,75) + { + whois $0 + } + + item(/WHOWAS $0,92) + { + whowas $0 + } + + item(/WHO $0,75) + { + who $0 + } + + separator + + item($tr("DNS for") $0,75) + { + foreach(%i,$str.split(",",$0))dns %i + } + + item($tr("Mask for") $0,75) (!%:multiple) + { + echo $mask($0,11) + } + } + + separator + + extpopup(C&TCP,ctcp,51) + + extpopup(&DCC,dcc,77) + + separator + + extpopup($tr("&Ignore"),ignore,203) (!%:multiple) + + extpopup($tr("&Registration"),registration,111) (!%:multiple) + + item($tr("Notify Avatar"),57) + { + avatar.notify $0 + } + + separator + + item($tr("Clear Buffer"),121) + { + clear + } +} + + +# +# Logging popup for the windows +# +defpopup(logging) +{ + prologue + { + + # If this window is being logged actually , $log.file will be non empty + # and pointing to the log file actually open. + %:logfile = $str.replace($log.file,,$file.localdir) + } + + label($tr("Logging to"):
%:logfile) ("%:logfile" != "") + + item($tr("Flush Log File"),19) (%:logfile) + { + log.flush + } + + separator + + item($tr("Stop Logging"),58) (%:logfile) + { + log.stop + } + + label($tr("Not Logging")) (!%:logfile) + + item($tr("Log To Default File"),119) (!%:logfile) + { + log.start + } + + item($tr("Log To Default File") "("$tr("Include Existing Buffer")")",119) (!%:logfile) + { + log.start -p + } + + item($tr("Log To..."),119) (!%:logfile) + { + dialog.file(save,$tr("Choose Log Filename")) + { + if($0)log.start $0 + } + } + + item($tr("Log To...") "("$tr("Include Existing Buffer"),119) (!%:logfile) + { + dialog.file(save,$tr("Choose Log Filename")) + { + if($0)log.start -p $0 + } + } +} + +defpopup(defaulttextview) +{ + prologue + { + + # we use the extended scope variables: they are visible in the entire defpopup scope + # %:visible is the string that we will "show to the user" in the popup widget + # for multiple users the string might become long so we are going to change it in "multiple users" + %:visible = $0 + # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list + # of multiple nicknames rather than a single nick + %:multiple = 0 + # finally , set these variables + if($str.findfirst(%:visible,",") != -1) + { + # found a comma in the $0 parameter...we have multiple nicknames + %:visible = "("$tr("Multiple Users")")" + %:multiple = 1 + } + } + + item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple) + { + whois $0 $0 + } + + separator + + popup($tr("&Information"),49) + { + item(/WHOIS $0,75) + { + whois $0 + } + + item(/WHOWAS $0,92) + { + whowas $0 + } + + item(/WHO $0,75) + { + who $0 + } + + separator + + item(DNS $0,75) + { + foreach(%i,$str.split(",",$0))dns %i + } + } + + separator + + item($tr("&Query") %:visible,47) + { + query $0 + } + + separator + + extpopup(C&TCP,ctcp,51) + + extpopup(&DCC,dcc,77) + + separator + + extpopup($tr("&Registration"),registration,111) (!%:multiple) + + extpopup($tr("&Highlight"),highlight,181) (!%:multiple) + + extpopup($tr("Ig&nore"),ignore,203) (!%:multiple) + + item($tr("Notify avatar"),57) + { + avatar.notify $0 + } + + separator + + item($tr("Clear Buffer"),121) + { + clear + } +} + +file.addimagepath %mypath/pics/ + +# +# FIXME: Add uninstall part: +# file.delimagepath +# + + +# +# A default popup for the middle click in a text view +# This should manage logging , buffer saving and other +# stuff common to ALL windows +# + +defpopup(windowpopup) +{ + extpopup(Logging,logging,119) + +# popup(Buffer) +# { +# item("Save to file...")window.savebuffer +# item("Clear")window.clear +# item("Find...")window.findtext +# } +# popup(View) +# { +# item("Show images")($window.images == 0)window.images 1 +# item("Enable timestamps")($window.timestamp == 0)window.timestamp 1 +# item("Disable timestamps")($window.timestam == 1)window.timestamp 0 +# item("Set font...")$window.setfont +# item("Set background...")$window.setbackground +# } +# popup(Mdi) +# { +# item("Minimize")window.minimize +# item("Maximize")window.maximize +# } +} + +# Host link popup + +defpopup(hostpopup) +{ + item(Look Up $0,13) + { + host -a $0 + } + + separator + + item(Open ftp://$0/,145) ("$system.ostype" == "unix") + { + openurl ftp://$0/ + } + + item(Telnet to $0,25) + { + if("$system.ostype" == "unix")run xterm -e telnet $0 + else run telnet $0 + } + + separator + + item(Traceroute $0,42) + { + if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute to $0...\" && traceroute $0 && cat" + else run tracert $0 + } + + item(Traceroute6 $0,42) + { + if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute (inet6) to $0...\" && traceroute6 $0 && cat" + else run tracert6 $0 + } + + item(Ping $0,147) + { + if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping $0...\" && ping $0 && cat" + else run ping $0 + } + + item(Ping6 $0,147) + { + if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping (inet6) $0...\" && ping6 $0 && cat" + else run ping6 $0 + } +} \ No newline at end of file diff --git a/data/defscript/theme-install.kvs b/data/defscript/theme-install.kvs new file mode 100644 index 00000000..febbbbc0 --- /dev/null +++ b/data/defscript/theme-install.kvs @@ -0,0 +1,30 @@ +addon.register("Theme: @THEMENAME@","@THEMEVERSION@",$tr("@THEMENAME@"),$tr("@THEMEDESCRIPTION@"),"3.2.0.99") +{ + # This is our uninstall callback: it will be called by KVIrc when addon.uninstall is invoked + + # This is an automatically generated alias that will erase the installed files + @ALIASNAME@_uninstallfiles + file.rmdir $file.localdir("themes/@SUBDIR@") + alias(@ALIASNAME@_uninstallfiles) {} + # Done +} + +# Ok, addon.register succeeded. We can go on with the installation. + +# Get the path that this script was launched from +%mypath = $file.extractPath($0) + +# get the installer helper class (this is pretty standard and included in the distro) +parse %mypath/utils/installer.kvs + +# The installer will copy our files and generate automatically +# an uninstallation alias for them +%installer = $new(installer,0,myinstaller) + +# copy files in each subdirectory +# the pics + +%installer->$copyFiles("%mypath/files/","*",$file.localdir("themes/@SUBDIR@")) +%installer->$generateUninstallAlias("@ALIASNAME@_uninstallfiles") +# finally kill the installer helper +delete %installer diff --git a/data/defscript/toolbars.kvs b/data/defscript/toolbars.kvs new file mode 100644 index 00000000..84e7b93a --- /dev/null +++ b/data/defscript/toolbars.kvs @@ -0,0 +1,43 @@ +# Default toolbars file + +toolbar.create irccontext $tr("IRC Context") $icon("irc4") +# toolbar.additem irccontext kvirc.irccontextdisplay - info dublicated with te status line +toolbar.additem irccontext kvirc.connect +toolbar.additem irccontext kvirc.servermenu +toolbar.additem irccontext kvirc.newirccontext +toolbar.additem irccontext kvirc.separator +toolbar.additem irccontext kvirc.nicknamemenu +toolbar.additem irccontext kvirc.irctools +toolbar.additem irccontext kvirc.ircactions +toolbar.additem irccontext kvirc.usermodemenu +toolbar.show irccontext + +toolbar.create options $tr("Options") $icon("options") +toolbar.additem irccontext kvirc.serveroptions +toolbar.additem options kvirc.identityoptions +toolbar.additem options kvirc.generaloptions +toolbar.additem options kvirc.themeoptions +toolbar.show options + +toolbar.create help $tr("Help") 49 +toolbar.additem help kvirc.helpindex +if($lang(short)==ru) + toolbar.additem help kvirc.kvircruhomepage +else + toolbar.additem help kvirc.kvirchomepage +toolbar.show help + +toolbar.create scripting $tr("Scripting") $icon("binarytext") +toolbar.additem scripting kvirc.actioneditor +toolbar.additem scripting kvirc.aliaseditor +toolbar.additem scripting kvirc.eventeditor +toolbar.additem scripting kvirc.popupeditor +toolbar.additem scripting kvirc.raweditor +toolbar.additem scripting kvirc.codetester +toolbar.additem scripting kvirc.separator +toolbar.additem scripting kvirc.executekvs + +toolbar.create winops $tr("Window operations") $icon("cascadewindows") +toolbar.additem winops kvirc.cascadewindows +toolbar.additem winops kvirc.tilewindows +toolbar.additem winops kvirc.minimizeallwindows \ No newline at end of file diff --git a/data/deftheme/Makefile.am b/data/deftheme/Makefile.am new file mode 100644 index 00000000..c6ce91e6 --- /dev/null +++ b/data/deftheme/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = silverirc + diff --git a/data/deftheme/silverirc/Makefile.am b/data/deftheme/silverirc/Makefile.am new file mode 100644 index 00000000..e4f01a62 --- /dev/null +++ b/data/deftheme/silverirc/Makefile.am @@ -0,0 +1,5 @@ +tmpdir = $(themedir)/silverirc + +tmp_DATA = themeinfo.kvc themedata.kvc pixmapIrcViewBackground.png pixmapInputBackground.png pixmapUserListViewBackground.png + +EXTRA_DIST = $(tmp_DATA) \ No newline at end of file diff --git a/data/deftheme/silverirc/pixmapInputBackground.png b/data/deftheme/silverirc/pixmapInputBackground.png new file mode 100644 index 00000000..8e903351 Binary files /dev/null and b/data/deftheme/silverirc/pixmapInputBackground.png differ diff --git a/data/deftheme/silverirc/pixmapIrcViewBackground.png b/data/deftheme/silverirc/pixmapIrcViewBackground.png new file mode 100644 index 00000000..f02f9166 Binary files /dev/null and b/data/deftheme/silverirc/pixmapIrcViewBackground.png differ diff --git a/data/deftheme/silverirc/pixmapUserListViewBackground.png b/data/deftheme/silverirc/pixmapUserListViewBackground.png new file mode 100644 index 00000000..90560c82 Binary files /dev/null and b/data/deftheme/silverirc/pixmapUserListViewBackground.png differ diff --git a/data/deftheme/silverirc/themedata.kvc b/data/deftheme/silverirc/themedata.kvc new file mode 100644 index 00000000..a83296b8 --- /dev/null +++ b/data/deftheme/silverirc/themedata.kvc @@ -0,0 +1,273 @@ +# KVIrc configuration file +[ThemeData] +pixmapUserListViewBackground=pixmapUserListViewBackground.png +msgtypeSearch=206,14,100,1,1 +msgtypeMeBanExcept=197,3,100,1,5 +msgtypeNickServ=164,5,100,1,2 +msgtypeChanPrivmsgCrypted=101,1,100,1,3 +msgtypeNotifyOffLine=95,2,100,1,1 +msgtypeSocketMessage=21,14,100,1,1 +boolDisablePopupIcons=false +boolUseExtendedPrivmsgView=false +msgtypeMeChanAdmin=244,3,100,1,1 +msgtypeMeBanUnExcept=198,3,100,1,5 +msgtypeMeBan=195,5,100,1,5 +msgtypeMeOp=189,3,100,1,5 +msgtypeWallops=139,5,100,1,3 +msgtypeQueryTrace=181,15,100,1,1 +msgtypeHalfDeOp=175,3,100,1,2 +msgtypeIcq=122,5,100,1,1 +msgtypeOwnPrivmsgCrypted=100,1,100,1,3 +uintUserListPixmapAlign=1 +colorInputSelectionForeground=0,0,0 +colorCaptionTextInactive=0,0,0 +stringExtendedPrivmsgPrefix=[ +boolShowTreeTaskbarHeader=false +boolShowUserChannelIcons=true +boolUseGlobalPseudoTransparency=false +msgtypeMeDeVoice=192,3,100,1,5 +msgtypeBroadcastPrivmsg=183,1,100,1,3 +msgtypeChanServ=165,5,100,1,2 +msgtypeWhoisOther=92,2,100,1,1 +msgtypeWhoisChannels=89,2,100,1,1 +msgtypeWhoisUser=88,2,100,1,1 +msgtypeOp=34,3,100,1,2 +msgtypeParserError=11,4,100,1,1 +colorIrcViewMarkLine=40,40,40 +colorUserListViewNormalForeground=0,0,0 +boolUseDifferentColorForOwnNick=true +boolScaleAvatars=true +msgtypeServerError=272,14,100,1,1 +msgtypeMeInviteExcept=199,3,100,1,5 +msgtypeChannelNoticeCrypted=154,5,100,1,3 +msgtypeIrc=105,3,100,1,0 +msgtypeCtcpRequestUnknown=55,5,100,1,2 +msgtypeCtcpRequestReplied=52,5,100,1,2 +colorUserListViewChanOwnerForeground=81,87,111 +colorUserListViewUserOpForeground=0,127,178 +colorUserListViewVoiceForeground=0,0,200 +colorInputForeground=0,0,0 +colorCaptionTextActive2=0,0,0 +colorMdiCaptionActive=113,125,190 +colorTaskBarNormalText=0,0,0 +boolIrcViewUrlHighlighting=true +stringIconThemeSubdir=silverirc +msgtypeAway=170,3,100,1,4 +msgtypeIcqMessage=128,5,100,1,1 +msgtypeLinks=112,2,100,1,1 +msgtypeBan=67,5,100,1,1 +msgtypeVoice=35,3,100,1,1 +msgtypeQuit=58,14,100,1,2 +msgtypeQueryPrivateMessage=48,1,100,1,4 +msgtypeTopic=42,3,100,1,1 +msgtypeHostLookup=13,2,100,1,1 +fontIrcToolBarApplet=Verdana,10,5,50,i +uintToolBarAppletPixmapAlign=0 +uintUserListViewGridType=3 +colorTreeTaskBarProgress=150,150,150 +colorGlobalTransparencyFade=255,255,255 +colorTaskBarHighlight2Text=32,0,255 +boolUseTreeWindowListTaskBar=true +pixmapInputBackground=pixmapInputBackground.png +mirccolor0=255,255,255 +msgtypeMeChanOwner=262,3,100,1,2 +msgtypeChanOwner=260,3,100,1,2 +msgtypeUserDeOp=175,3,100,1,1 +msgtypeGenericError=135,4,100,1,1 +msgtypeStats=205,1,100,1,1 +msgtypeIcqMessageSent=129,5,100,1,1 +msgtypeQueryPrivmsgCrypted=102,1,100,1,3 +msgtypeAvatarChange=57,15,100,1,2 +msgtypeUnrecognized=41,5,100,1,1 +msgtypeSocketWarning=22,5,100,1,3 +msgtypeSelection=0,0,15,1,1 +uintIrcViewPixmapAlign=34 +colorTreeTaskBarHighlight2Foreground=167,222,163 +colorTreeTaskBarActiveForeground=0,0,0 +colorIrcToolBarAppletForegroundMidContrast=110,110,110 +colorUserListViewBackground=255,255,255 +colorTaskBarHighlight1Text=0,16,144 +colorTaskBarMinimizedText=60,60,60 +boolStripMircColorsInUserMessages=false +boolIrcViewShowImages=true +mirccolor1=0,0,0 +msgtypeIgnore=203,15,100,1,1 +msgtypeMeInviteUnexcept=200,3,100,1,5 +msgtypeMultimedia=177,5,100,1,2 +msgtypeServerNotice=141,5,100,1,1 +msgtypeDccChatMsg=103,1,100,1,3 +msgtypeCreationTime=93,15,100,1,1 +msgtypeWhoisServer=91,2,100,1,1 +msgtypeInviteUnexcept=72,15,100,1,1 +msgtypeSplit=59,15,100,1,2 +msgtypeCtcpRequestIgnored=53,5,100,1,1 +msgtypeSystemError=24,4,100,1,4 +msgtypeHighlight=0,7,100,1,5 +fontTaskbar=Sans%20Serif,10,5,50 +uintTreeTaskBarPixmapAlign=0 +uintGlobalTransparencyParentFadeFactor=10 +colorTreeTaskBarHighlight3Foreground=128,0,255 +colorTaskBarHighlight4Text=220,0,255 +colorTaskBarProgressBar=180,180,180 +colorMdiBackground=0,0,0 +boolUseTaskBarActivityMeter=false +boolColorNicks=false +mirccolor2=0,0,140 +msgtypeMeChanUnAdmin=245,3,100,1,1 +msgtypeWho=75,2,100,1,1 +msgtypeDeop=62,3,100,1,1 +msgtypeRaw=25,2,100,1,1 +uintTimeStampBackground=100 +colorUserListViewChanAdminForeground=83,54,5 +colorTreeTaskBarHighlight4Foreground=220,0,255 +colorTaskBarHighlight3Text=128,20,255 +colorTreeTaskBarActiveBackground=200,200,200 +colorLabelForeground=0,0,0 +colorUserListViewSelectionForeground=0,0,0 +colorInputBackgroundColor=255,255,255 +boolDisableUserListLabel=false +mirccolor10=0,150,180 +mirccolor3=0,100,0 +msgtypeGenericSuccess=136,14,100,1,3 +msgtypeDccChatMsgCrypted=104,1,100,1,3 +msgtypeAction=56,13,100,1,3 +msgtypeSystemWarning=26,4,100,1,3 +uintTimeStampForeground=14 +colorTreeTaskBarHighlight5Foreground=255,0,0 +colorTreeTaskBarForeground=0,0,0 +colorIrcViewBackground=255,255,255 +boolUseFlatClassicTaskbarButtons=true +boolDisableAvatars=false +boolUserListViewDrawGrid=false +boolUseGlobalApplicationFont=false +iccolor0=250,250,0 +mirccolor11=170,170,255 +mirccolor4=230,0,0 +msgtypeChanUnOwner=261,3,100,1,2 +msgtypeVerbose=259,15,100,1,0 +msgtypeMeDeHalfOp=194,3,100,1,5 +msgtypeBroadcastNotice=184,5,100,1,3 +msgtypeBanExcept=69,15,100,1,1 +msgtypeNick=61,2,100,1,1 +msgtypeOwnPrivateMessage=45,1,100,1,3 +msgtypeLink=0,2,100,1,0 +uintGlobalTransparencyChildFadeFactor=50 +colorTaskBarHighlight5Text=255,0,0 +colorTreeTaskBarBackground=255,255,255 +colorIrcToolBarAppletForegroundHighContrastInactive1=40,40,40 +colorLabelBackground=255,255,255 +colorInputSelectionBackground=198,198,198 +boolObtainGlobalBackgroundFromKde=false +pixmapLabelBackground= +iccolor1=0,0,0 +mirccolor12=15,15,255 +mirccolor5=150,0,0 +msgtypeChanAdmin=242,3,100,1,1 +msgtypeGenericStatus=133,14,100,1,1 +msgtypeHalfOp=174,3,100,1,1 +msgtypeDevoice=63,3,100,1,1 +msgtypeJoin=39,14,100,1,2 +msgtypeMotd=30,1,100,1,0 +fontIrcView=Trebuchet%20MS,10,5,50 +colorIrcToolBarAppletForegroundHighContrastInactive2=40,40,40 +colorIrcToolBarAppletForegroundLowContrast=180,180,180 +pixmapGlobalTransparencyBackground= +pixmapTreeTaskBarBackground= +iccolor2=0,0,200 +mirccolor13=200,0,200 +mirccolor6=80,0,80 +msgtypeMeChanUnOwner=263,3,100,1,2 +msgtypeMeUserOp=193,3,100,1,1 +msgtypeWhoisIdle=90,2,100,1,1 +msgtypeNicknameProblem=87,3,100,1,1 +msgtypeDccError=79,5,100,1,1 +msgtypeInviteExcept=71,15,100,1,1 +msgtypeConnection=14,5,100,1,1 +msgtypeParserWarning=12,5,100,1,0 +colorUserListViewOwnForeground=126,74,131 +colorUserListViewHalfOpForeground=119,0,178 +colorIrcToolBarAppletForegroundHighContrastActive1=0,0,0 +colorMdiCaptionInactive=180,180,180 +stringExtendedPrivmsgPostfix=]%20 +boolDrawEmoticons=false +boolIrcViewWrapMargin=true +iccolor3=200,0,0 +mirccolor14=80,80,80 +mirccolor7=255,90,0 +msgtypeUserOp=174,3,100,1,1 +msgtypeGenericVerbose=137,14,100,1,1 +msgtypeMeUnban=196,5,100,1,5 +msgtypeMeHalfOp=193,3,100,1,5 +msgtypeInvite=176,7,100,1,4 +msgtypeIdent=171,2,100,1,3 +msgtypeChanMode=73,15,100,1,1 +msgtypeBanUnexcept=70,15,100,1,1 +msgtypeKey=65,15,100,1,2 +msgtypeServerInfo=29,1,100,1,1 +fontInput=Trebuchet%20MS,10,5,50 +colorUserListViewAwayForeground=143,143,143 +colorIrcToolBarAppletForegroundHighContrastActive2=0,60,0 +colorInputCursor=72,216,72 +boolUseSpecialColorForTimestamp=true +pixmapIrcToolBarAppletBackground= +iccolor4=255,255,255 +mirccolor15=170,170,170 +mirccolor8=255,255,0 +msgtypeSSL=229,2,100,1,0 +msgtypeMeVoice=190,3,100,1,5 +msgtypeChannelNotice=153,5,100,1,3 +msgtypeNotifyOnLine=94,2,100,1,1 +msgtypeCtcpReply=51,5,100,1,2 +msgtypeUnhandledReply=28,2,100,1,1 +msgtypeSystemMessage=27,2,100,1,1 +fontApplication=Sans%20Serif,10,5,50 +colorUserListViewGrid=216,216,216 +colorTreeTaskBarHighlight1Foreground=165,165,165 +colorCaptionTextActive=255,255,255 +pixmapIrcViewBackground=pixmapIrcViewBackground.png +iccolor5=0,150,190 +mirccolor9=0,255,0 +msgtypeTextEncoding=236,1,100,1,0 +msgtypeMeDeOp=191,3,100,1,5 +msgtypeJoinError=182,5,100,1,4 +msgtypeQueryNotice=155,5,100,1,3 +msgtypeSpam=120,14,100,1,3 +msgtypeKick=110,4,100,1,2 +msgtypeDccRequest=77,5,100,1,3 +msgtypeUnban=68,5,100,1,1 +msgtypeLimit=66,15,100,1,1 +msgtypeMode=64,15,100,1,1 +msgtypePart=40,14,100,1,2 +msgtypeServerPing=36,15,100,1,0 +colorUserListViewOpForeground=200,0,0 +colorInputControl=200,100,0 +colorCaptionTextInactive2=30,30,30 +pixmapMdiBackground= +iccolor6=0,130,0 +msgtypeHelp=49,3,100,1,1 +msgtypeMeDeUserOp=194,3,100,1,1 +msgtypeChanUnAdmin=243,3,100,1,1 +msgtypeMeKick=188,4,100,1,5 +msgtypeList=173,1,100,1,1 +msgtypeQueryNoticeCrypted=156,5,100,1,3 +msgtypeChannelPrivateMessage=46,1,100,1,3 +msgtypeSocketError=23,4,100,1,4 +msgtypeEcho=0,1,100,1,1 +uintInputPixmapAlign=32 +colorIrcToolBarAppletBackground=255,255,255 +boolShowUserChannelState=false +boolBoldedNicks=false +boolShowUserAndHostInPrivmsgView=false +iccolor7=150,0,170 +msgtypeGenericCritical=134,4,100,1,4 +msgtypeGenericWarning=132,5,100,1,0 +msgtypeCtcpReplyUnknown=162,5,100,1,1 +msgtypeDccMsg=78,5,100,1,2 +msgtypeQuitSplit=60,14,100,1,2 +msgtypeCtcpRequestFlood=54,5,100,1,1 +msgtypeUrl=0,2,100,1,1 +fontLabel=Sans%20Serif,10,5,50 +fontUserListView=Sans%20Serif,10,5,50,i +uintClassicTaskBarMaximumButtonWidth=100 +colorUserListViewSelectionBackground=194,194,194 +boolClassicTaskBarSetMaximumButtonWidth=true diff --git a/data/deftheme/silverirc/themeinfo.kvc b/data/deftheme/silverirc/themeinfo.kvc new file mode 100644 index 00000000..14fbdcc8 --- /dev/null +++ b/data/deftheme/silverirc/themeinfo.kvc @@ -0,0 +1,10 @@ +# KVIrc configuration file +[ThemeInfo] +Author=Alexey +Version=0.7 +Name=SilverIRC +MinimumKvircVersion=3.2.4 +Date=08.01.2007 +Description=Default KVIrc Theme +ThemeInfoFileVersion=1.0.0 +Application=KVIrc 3.2.4 diff --git a/data/doctemplates/Makefile.am b/data/doctemplates/Makefile.am new file mode 100644 index 00000000..edd47224 --- /dev/null +++ b/data/doctemplates/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = rfc2812.template kvircintro.template ircintro.template diff --git a/data/doctemplates/ircintro.template b/data/doctemplates/ircintro.template new file mode 100644 index 00000000..9b514856 --- /dev/null +++ b/data/doctemplates/ircintro.template @@ -0,0 +1,60 @@ +/* + @doc: ircintro + @title: + Introduction to IRC + @short: + Introduction to IRC + @keyterms: + irc,channel,channels,channel operator,irc server,server,irc network,irc user,irc users,irc client,internet relay chat,nickname,nicknames,irc etiquette + @body: + [big]What is IRC ?[/big][br] + Internet Relay Chat (IRC) is one of the most popular and most interactive services on the Internet. + When you've been wondering 'where the others are?', then IRC is what you're looking for. + IRC allows real-time conversations with people from the whole planet, 24-hours a day, worldwide. + [br] + [big]How does it work ?[/big][br] + IRC consists of various separate networks (or "nets") of IRC servers: machines that allow users to connect to IRC. + The largest nets are EFnet (the original IRC net, often having more than 32,000 people at once), Undernet, IRCnet, DALnet, and NewNet. + Generally, the user (such as you) runs a program (called "irc client") to connect to a server on one of the IRC nets. + The server will relay the informations between you and the "rest" of the network (obviously including the other irc users). + Each user is known on IRC by a nickname (or "nick"), such as smartgal or FunGuy. + To avoid conflicts with other users, it is best to use a nick that is not too common, e.g., "john" is a poor choice. + Some networks allow the registration of nicknames: once you have registered a nickname noone else will be able to use it. + Once connected to an IRC server on an IRC network, you will usually join one or more [b]channels[/b] and converse with other irc users. + On EFnet, there often are more than 12,000 channels, each one devoted to a different topic. + [br] + [big]Channels[/big][br] + Channel names usually begin with a #, as in #irchelp. + The same channels are shared among all IRC servers on the same net, so you do not have to be on the same IRC server as your friends. + Each channel can be joined by a "virtually" unlimited number of users and every word spoken "to the channel" is + seen by all the users that have joined it. + Each channel has a topic that usually describes the ideas being exchanged between users in that moment. + It is a good idea to take a look at the topic before starting to talk "randomly" :). + Channels are run by channel operators, or just "ops" for short, who can control the channel by choosing who may join (by "banning" some users), + who must leave (by "kicking" them out), and even who may speak (by making the channel "moderated")! + Channel ops have complete control over their channel, and their decisions are final. + If you are banned from a channel, send a /msg to a channel op and ask nicely to be let in + (see the /who command in the next section to learn how to find ops). + If they ignore you or /who gives no response because the channel is in secret mode (+s), + just go somewhere else where you are more welcome. + Some IRC networks have a richer hierarchy of channel users and you may find half-operators, channel administrators or + channel owners. + [br] + [big]Just a bit of IRC Etiquette...[/big][br] + You'll find all kinds of people on IRC. Some nice, and some not so nice. + Simply behave as you would in the real world. Most people will be friendly and considerate, if you are as well. + When you join a channel, say hello. Don't expect to get hello's back from everyone, + especially when there are lots of people on the channel. + If you've never visited the channel before and have no idea what to expect, + just sit back and watch for awhile to get a feel for the flow of the channel (thats called "lurking"). + [br] + [big]Finding more info[/big][br] + The web is full of informations about IRC: it's just a matter of typing "IRC" in a search engine. + An user-friendly site to start from might be www.irchelp.org: you will find a huge list of + documents and links that will hopefully answer to all your questions. + You may also give a short read to the [doc:kvircintro]Introduction to KVIrc[/doc] which will + give you an idea of what an IRC client is. + [br] + [big]Well...[/big][br] + Have fun :) +*/ diff --git a/data/doctemplates/kvircintro.template b/data/doctemplates/kvircintro.template new file mode 100644 index 00000000..149590af --- /dev/null +++ b/data/doctemplates/kvircintro.template @@ -0,0 +1,67 @@ +/* + @doc: kvircintro + @title: + Introduction to KVIrc + @short: + Introduction to KVIrc + @keyterms: + KVIrc + @body: + [big]Introduction[/big] + + In really simple words KVIrc is a Chat client: you use it to talk to other + people over the internet. More specifically KVIrc is an IRC client + and if you haven't readed it yet please take a look at the [doc:ircintro]IRC introduction[/doc] + then come back here. Now that you know what IRC is then you already know + that an IRC client acts as a relay for the informations that you + exchange with your IRC server. KVIrc also acts as a filter and provides + an user-friendly interface for the communication protocol that is a bit complex + and rude when seen in its original form (by using telnet for example). + KVIrc also contains a sophisticated scripting language that allows you to + implement automated reactions to the network events. This is something similar + to creating a robot that acts spontaneously after you have told him what to do. + The scripting language allows you to enchance the KVIrc's interface and + to handle special IRC network features that KVIrc itself isn't aware of. + + [big]History[/big] + + The original meaning of the name "KVIrc" was, more or less, "K Visual IRC Client". + The initial K is a common prefix for the applications written for the KDE + desktop environment: this was the case of the initial versions of KVIrc. + Starting from version 2.0.0 the absolute KDE dependancy has been dropped (for several + valid reasons) and the support became optional.[br] + "Visual" was (and is) one of the client goals: having an user-friendly interface to the IRC world. + Many extreme-unix users have misinterpreted the "user-friendly" interface and have tagged + KVIrc as a client for "newbies". Well... that is partially true: KVIrc is ALSO a client for newbies: + A total IRC novice should be able to "chat" in few minutes after installing the program, + preferably without bothering to read any manual. Yes ,I know that it is not in "unix"-style. + On the other side, KVIrc contains a whole bunch of compex features that can be discovered + only by reading the documentation and experimenting. I bet that you can also + find a lot of undocumented tricks :) + + [big]A bit of "philosophy"[/big] + + At the time of writing (Feb 2005) KVIrc approaches release 3.2.0. The small + [b]one-man-project[/b] has grown to the level of a small [b]community[/b]. + People from around the world have joined our development efforts and are + constantly donating their time, eyes and bandwidth in order to make KVIrc + a really good IRC client. Besides of simply giving you a free (as in freedom!) and nice + program for chatting, they are giving you the great opportunity to see what's behind + the scenes: you have the source code for the whole application. + In practical terms this means more or less 300.000 lines of tested, debugged and + commented C++ code, several perl scripts, dozens of makefiles and all the means + that you need to produce a working KVIrc executable on all the supported platforms. + There is a lot of knowledge (some people call it "technology" because it sells better) + inside, ready to be acquired by an attentive reader. Don't forget that the freedom of + building your own executable from the sources gives you the opportunity + of verifying the source itself: for example you might be interested in verifying + that KVIrc will not run any malware code on your machine nor will collect + your private data and sell it to someone while you're happily chatting with a friend. + [b]We call it freedom, please respect it.[/b] + + [big]Well...[/big] + + Have fun :)[br] + [br] + Szymon Stefanek and The KVIrc Development Team +*/ diff --git a/data/doctemplates/rfc2812.template b/data/doctemplates/rfc2812.template new file mode 100644 index 00000000..9d81a1c8 --- /dev/null +++ b/data/doctemplates/rfc2812.template @@ -0,0 +1,3312 @@ +/* + @doc: rfc2812 + @title: + RFC2812 + @short: + The IRC protocol specification (revised) + @keyterms: + irc, protocol, bnf, irc user, irc channel, server protocol, + server messages, server replies, numeric messages + @body: + +[table] + +[tr][td][pre] +Network Working Group, C.Kalt, April 2000 +Request for Comments: 2812 +Updates: 1459 +Category: Informational +[/pre][/td][/tr] + +[tr][td] +[center][big]Internet Relay Chat: Client Protocol[/big][/center] +[/td][/tr] + +[tr][td] +[b]Status of this Memo[/b] +[/td][/tr] + +[tr][td] +This memo provides information for the Internet community. It does +not specify an Internet standard of any kind. Distribution of this +memo is unlimited. +[/td][/tr] + +[tr][td] +[b]Copyright Notice[/b] +[/td][/tr] + +[tr][td] +Copyright (C) The Internet Society (2000). All Rights Reserved. +[/td][/tr] + +[tr][td] +[b]IESG NOTE:[/b] +[/td][/tr] + +[tr][td] +The IRC protocol itself enables several possibilities of transferring +data between clients, and just like with other transfer mechanisms +like email, the receiver of the data has to be careful about how the +data is handled. For more information on security issues with the IRC +protocol, see for example http://www.irchelp.org/irchelp/security/. +[/td][/tr] + +[tr][td] +[b]Abstract[/b] +[/td][/tr] + +[tr][td] +The IRC (Internet Relay Chat) protocol is for use with text based +conferencing; the simplest client being any socket program capable of +connecting to the server. +[p] +This document defines the Client Protocol, and assumes that the +reader is familiar with the IRC Architecture [IRC-ARCH]. +[/td][/tr] + +[tr][td] +[b]Table of Contents[/b] +[/td][/tr] + +[tr][td] +[ul] +[li]1. Labels[/li] +[ul] +[li]1.1 Servers[/li] +[li]1.2 Clients[/li] +[ul] +[li]1.2.1 Users[/li] +[ul] +[li]1.2.1.1 Operators[/li] +[/ul] +[li]1.2.2 Services[/li] +[/ul] +[li]1.3 Channels[/li] +[/ul] +[li]2. The IRC Client Specification[/li] +[ul] +[li]2.1 Overview[/li] +[li]2.2 Character codes[/li] +[li]2.3 Messages[/li] +[ul] +[li]2.3.1 Message format in Augmented BNF[/li] +[/ul] +[li]2.4 Numeric replies[/li] +[li]2.5 Wildcard expressions[/li] +[/ul] +[li]3. Message Details[/li] +[ul] +[li]3.1 Connection Registration[/li] +[ul] +[li]3.1.1 Password message[/li] +[li]3.1.2 Nick message[/li] +[li]3.1.3 User message[/li] +[li]3.1.4 Oper message[/li] +[li]3.1.5 User mode message[/li] +[li]3.1.6 Service message[/li] +[li]3.1.7 Quit[/li] +[li]3.1.8 Squit[/li] +[/ul] +[li]3.2 Channel operations[/li] +[ul] +[li]3.2.1 Join message[/li] +[li]3.2.2 Part message[/li] +[li]3.2.3 Channel mode message[/li] +[li]3.2.4 Topic message[/li] +[li]3.2.5 Names message[/li] +[li]3.2.6 List message[/li] +[li]3.2.7 Invite message[/li] +[li]3.2.8 Kick command[/li] +[/ul] +[li]3.3 Sending messages[/li] +[ul] +[li]3.3.1 Private messages[/li] +[li]3.3.2 Notice[/li] +[/ul] +[li]3.4 Server queries and commands[/li] +[ul] +[li]3.4.1 Motd message[/li] +[li]3.4.2 Lusers message[/li] +[li]3.4.3 Version message[/li] +[li]3.4.4 Stats message[/li] +[li]3.4.5 Links message[/li] +[li]3.4.6 Time message[/li] +[li]3.4.7 Connect message[/li] +[li]3.4.8 Trace message[/li] +[li]3.4.9 Admin command[/li] +[li]3.4.10 Info command[/li] +[/ul] +[li]3.5 Service Query and Commands[/li] +[ul] +[li]3.5.1 Servlist message[/li] +[li]3.5.2 Squery[/li] +[/ul] +[li]3.6 User based queries[/li] +[ul] +[li]3.6.1 Who query[/li] +[li]3.6.2 Whois query[/li] +[li]3.6.3 Whowas[/li] +[/ul] +[li]3.7 Miscellaneous messages[/li] +[ul] +[li]3.7.1 Kill message[/li] +[li]3.7.2 Ping message[/li] +[li]3.7.3 Pong message[/li] +[li]3.7.4 Error[/li] +[/ul] +[/ul] +[li]4. Optional features[/li] +[ul] +[li]4.1 Away[/li] +[li]4.2 Rehash message[/li] +[li]4.3 Die message[/li] +[li]4.4 Restart message[/li] +[li]4.5 Summon message[/li] +[li]4.6 Users[/li] +[li]4.7 Operwall message[/li] +[li]4.8 Userhost message[/li] +[li]4.9 Ison message[/li] +[/ul] +[li]5. Replies[/li] +[ul] +[li]5.1 Command responses[/li] +[li]5.2 Error Replies[/li] +[li]5.3 Reserved numerics[/li] +[/ul] +[li]6. Current implementations[/li] +[li]7. Current problems[/li] +[ul] +[li]7.1 Nicknames[/li] +[li]7.2 Limitation of wildcards[/li] +[li]7.3 Security considerations[/li] +[/ul] +[li]8. Current support and availability[/li] +[li]9. Acknowledgements[/li] +[li]10. References[/li] +[li]11. Author's Address[/li] +[li]12. Full Copyright Statement[/li] +[/ul] +[/td][/tr] + +[tr][td] +[b]1. Labels[/b] +[/td][/tr] + +[tr][td] +This section defines the identifiers used for the various components +of the IRC protocol. +[/td][/tr] + +[tr][td] +[b]1.1 Servers[/b] +[/td][/tr] + +[tr][td] +Servers are uniquely identified by their name, which has a maximum +length of sixty three (63) characters. See the protocol grammar +rules (section 2.3.1) for what may and may not be used in a server +name. +[/td][/tr] + +[tr][td] +[b]1.2 Clients[/b] +[/td][/tr] + +[tr][td] +For each client all servers MUST have the following information: a +netwide unique identifier (whose format depends on the type of +client) and the server which introduced the client. +[/td][/tr] + +[tr][td] +[b]1.2.1 Users[/b] +[/td][/tr] + +[tr][td] +Each user is distinguished from other users by a unique nickname +having a maximum length of nine (9) characters. See the protocol +grammar rules (section 2.3.1) for what may and may not be used in a +nickname. +[p] +While the maximum length is limited to nine characters, clients +SHOULD accept longer strings as they may become used in future +evolutions of the protocol. +[/td][/tr] + +[tr][td] +[b]1.2.1.1 Operators[/b] +[/td][/tr] + +[tr][td] +To allow a reasonable amount of order to be kept within the IRC +network, a special class of users (operators) is allowed to perform +general maintenance functions on the network. Although the powers +granted to an operator can be considered as 'dangerous', they are +nonetheless often necessary. Operators SHOULD be able to perform +basic network tasks such as disconnecting and reconnecting servers as +needed. In recognition of this need, the protocol discussed herein +provides for operators only to be able to perform such functions. +See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).[br] +[p] +A more controversial power of operators is the ability to remove a +user from the connected network by 'force', i.e., operators are able +to close the connection between any client and server. The +justification for this is very delicate since its abuse is both +destructive and annoying, and its benefits close to inexistent. For +further details on this type of action, see section 3.7.1 (KILL). +[/td][/tr] + +[tr][td] +[b]1.2.2 Services[/b] +[/td][/tr] + +[tr][td] +Each service is distinguished from other services by a service name +composed of a nickname and a server name. As for users, the nickname +has a maximum length of nine (9) characters. See the protocol +grammar rules (section 2.3.1) for what may and may not be used in a +nickname. +[/td][/tr] + +[tr][td] +[b]1.3 Channels[/b] +[/td][/tr] + +[tr][td] +Channels names are strings (beginning with a '&', '#', '+' or '!' +character) of length up to fifty (50) characters. Apart from the +requirement that the first character is either '&', '#', '+' or '!', +the only restriction on a channel name is that it SHALL NOT contain +any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space +is used as parameter separator and command is used as a list item +separator by the protocol). A colon (':') can also be used as a +delimiter for the channel mask. Channel names are case insensitive. +See the protocol grammar rules (section 2.3.1) for the exact syntax +of a channel name.[br] +[p] +Each prefix characterizes a different channel type. The definition +of the channel types is not relevant to the client-server protocol +and thus it is beyond the scope of this document. More details can +be found in "Internet Relay Chat: Channel Management" [IRC-CHAN]. +[/td][/tr] + +[tr][td] +[b]2. The IRC Client Specification[/b] +[/td][/tr] + +[tr][td] +[b]2.1 Overview[/b] +[/td][/tr] + +[tr][td] +The protocol as described herein is for use only with client to +server connections when the client registers as a user. +[/td][/tr] + +[tr][td] +[b]2.2 Character codes[/b] +[/td][/tr] + +[tr][td] +No specific character set is specified. The protocol is based on a +set of codes which are composed of eight (8) bits, making up an +octet. Each message may be composed of any number of these octets; +however, some octet values are used for control codes, which act as +message delimiters.[br] +[p] +Regardless of being an 8-bit protocol, the delimiters and keywords +are such that protocol is mostly usable from US-ASCII terminal and a +telnet connection. +[p] +Because of IRC's Scandinavian origin, the characters {}|^ are +considered to be the lower case equivalents of the characters []\~, +respectively. This is a critical issue when determining the +equivalence of two nicknames or channel names. +[/td][/tr] + +[tr][td] +[b]2.3 Messages[/b] +[/td][/tr] + +[tr][td] +Servers and clients send each other messages, which may or may not +generate a reply. If the message contains a valid command, as +described in later sections, the client should expect a reply as +specified but it is not advised to wait forever for the reply; client +to server and server to server communication is essentially +asynchronous by nature. +[p] +Each IRC message may consist of up to three main parts: the prefix +(OPTIONAL), the command, and the command parameters (maximum of +fifteen (15)). The prefix, command, and all parameters are separated +by one ASCII space character (0x20) each. +[p] +The presence of a prefix is indicated with a single leading ASCII +colon character (':', 0x3b), which MUST be the first character of the +message itself. There MUST be NO gap (whitespace) between the colon +and the prefix. The prefix is used by servers to indicate the true +origin of the message. If the prefix is missing from the message, it +is assumed to have originated from the connection from which it was +received from. Clients SHOULD NOT use a prefix when sending a +message; if they use one, the only valid prefix is the registered +nickname associated with the client. +[p] +The command MUST either be a valid IRC command or a three (3) digit +number represented in ASCII text. +[p] +IRC messages are always lines of characters terminated with a CR-LF +(Carriage Return - Line Feed) pair, and these messages SHALL NOT +exceed 512 characters in length, counting all characters including +the trailing CR-LF. Thus, there are 510 characters maximum allowed +for the command and its parameters. There is no provision for +continuation of message lines. See section 6 for more details about +current implementations. +[/td][/tr] + +[tr][td] +[b]2.3.1 Message format in Augmented BNF[/b] +[/td][/tr] + +[tr][td] +The protocol messages must be extracted from the contiguous stream of +octets. The current solution is to designate two characters, CR and +LF, as message separators. Empty messages are silently ignored, +which permits use of the sequence CR-LF between messages without +extra problems. +[p] +The extracted message is parsed into the components , + and list of parameters (). +[p] +[pre] + The Augmented BNF representation for this is: + + message = [ ":" prefix SPACE ] command [ params ] crlf + prefix = servername / ( nickname [ [ "!" user ] "@" host ] ) + command = 1*letter / 3digit + params = *14( SPACE middle ) [ SPACE ":" trailing ] + =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ] + + nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF + ; any octet except NUL, CR, LF, " " and ":" + middle = nospcrlfcl *( ":" / nospcrlfcl ) + trailing = *( ":" / " " / nospcrlfcl ) + + SPACE = %x20 ; space character + crlf = %x0D %x0A ; "carriage return" "linefeed" + + NOTES: + 1) After extracting the parameter list, all parameters are equal + whether matched by or . is just a + syntactic trick to allow SPACE within the parameter. + + 2) The NUL (%x00) character is not special in message framing, and + basically could end up inside a parameter, but it would cause + extra complexities in normal C string handling. Therefore, NUL + is not allowed within messages. + + Most protocol messages specify additional semantics and syntax for + the extracted parameter strings dictated by their position in the + list. For example, many server commands will assume that the first + parameter after the command is the list of targets, which can be + described with: + + target = nickname / server + msgtarget = msgto *( "," msgto ) + msgto = channel / ( user [ "%" host ] "@" servername ) + msgto =/ ( user "%" host ) / targetmask + msgto =/ nickname / ( nickname "!" user "@" host ) + channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring + [ ":" chanstring ] + servername = hostname + host = hostname / hostaddr + hostname = shortname *( "." shortname ) + shortname = ( letter / digit ) *( letter / digit / "-" ) + *( letter / digit ) + ; as specified in RFC 1123 [HNAME] + hostaddr = ip4addr / ip6addr + ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit + ip6addr = 1*hexdigit 7( ":" 1*hexdigit ) + ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr + nickname = ( letter / special ) *8( letter / digit / special / "-" ) + targetmask = ( "$" / "#" ) mask + ; see details on allowed masks in section 3.3.1 + chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B + chanstring =/ %x2D-39 / %x3B-FF + ; any octet except NUL, BELL, CR, LF, " ", "," and ":" + channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 ) + + Other parameter syntaxes are: + + user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF ) + ; any octet except NUL, CR, LF, " " and "@" + key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F ) + ; any 7-bit US_ASCII character, + ; except NUL, CR, LF, FF, h/v TABs, and " " + letter = %x41-5A / %x61-7A ; A-Z / a-z + digit = %x30-39 ; 0-9 + hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F" + special = %x5B-60 / %x7B-7D + ; "[", "]", "\", "`", "_", "^", "{", "|", "}" + + NOTES: + 1) The syntax is given here for the sole purpose of + indicating the format to follow for IP addresses. This + reflects the fact that the only available implementations of + this protocol uses TCP/IP as underlying network protocol but is + not meant to prevent other protocols to be used. + + 2) has a maximum length of 63 characters. This is a + limitation of the protocol as internet hostnames (in + particular) can be longer. Such restriction is necessary + because IRC messages are limited to 512 characters in length. + Clients connecting from a host which name is longer than 63 + characters are registered using the host (numeric) address + instead of the host name. + + 3) Some parameters used in the following sections of this + documents are not defined here as there is nothing specific + about them besides the name that is used for convenience. + These parameters follow the general syntax defined for + . +[/pre] +[/td][/tr] + +[tr][td] +[b]2.4 Numeric replies[/b] +[/td][/tr] + +[tr][td] +Most of the messages sent to the server generate a reply of some +sort. The most common reply is the numeric reply, used for both +errors and normal replies. The numeric reply MUST be sent as one +message consisting of the sender prefix, the three-digit numeric, and +the target of the reply. A numeric reply is not allowed to originate +from a client. In all other respects, a numeric reply is just like a +normal message, except that the keyword is made up of 3 numeric +digits rather than a string of letters. A list of different replies +is supplied in section 5 (Replies). +[/td][/tr] + +[tr][td] +[b]2.5 Wildcard expressions[/b] +[/td][/tr] + +[tr][td] +When wildcards are allowed in a string, it is referred as a "mask". +[p] +For string matching purposes, the protocol allows the use of two +special characters: '?' (%x3F) to match one and only one character, +and '*' (%x2A) to match any number of any characters. These two +characters can be escaped using the character '\' (%x5C). +[p] +[pre] + The Augmented BNF syntax for this is: + + mask = *( nowild / noesc wildone / noesc wildmany ) + wildone = %x3F + wildmany = %x2A + nowild = %x01-29 / %x2B-3E / %x40-FF + ; any octet except NUL, "*", "?" + noesc = %x01-5B / %x5D-FF + ; any octet except NUL and "\" + matchone = %x01-FF + ; matches wildone + matchmany = *matchone + ; matches wildmany + + Examples: + + a?c ; Matches any string of 3 characters in length starting + with "a" and ending with "c" + + a*c ; Matches any string of at least 2 characters in length + starting with "a" and ending with "c" +[/pre] +[/td][/tr] + +[tr][td] +[b]3. Message Details[/b] +[/td][/tr] + +[tr][td] +On the following pages there are descriptions of each message +recognized by the IRC server and client. All commands described in +this section MUST be implemented by any server for this protocol. +[p] +Where the reply ERR_NOSUCHSERVER is returned, it means that the +target of the message could not be found. The server MUST NOT send +any other replies after this error for that command. +[p] +The server to which a client is connected is required to parse the +complete message, and return any appropriate errors. +[p] +If multiple parameters is presented, then each MUST be checked for +validity and appropriate responses MUST be sent back to the client. +In the case of incorrect messages which use parameter lists with +comma as an item separator, a reply MUST be sent for each item. +[/td][/tr] + +[tr][td] +[b]3.1 Connection Registration[/b] +[/td][/tr] + +[tr][td] +The commands described here are used to register a connection with an +IRC server as a user as well as to correctly disconnect. +[p] +A "PASS" command is not required for a client connection to be +registered, but it MUST precede the latter of the NICK/USER +combination (for a user connection) or the SERVICE command (for a +service connection). The RECOMMENDED order for a client to register +is as follows: +[p] +[pre] + 1. Pass message + 2. Nick message 2. Service message + 3. User message +[/pre] +[p] +Upon success, the client will receive an RPL_WELCOME (for users) or +RPL_YOURESERVICE (for services) message indicating that the +connection is now registered and known the to the entire IRC network. +The reply message MUST contain the full client identifier upon which +it was registered. +[/td][/tr] + +[tr][td] +[b]3.1.1 Password message[/b] +[/td][/tr] + +[tr][td][pre] +Command: PASS +Parameters: + +The PASS command is used to set a 'connection password'. The +optional password can and MUST be set before any attempt to register +the connection is made. Currently this requires that user send a +PASS command before sending the NICK/USER combination. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED + + Example: + + PASS secretpasswordhere +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.1.2 Nick message[/b] +[/pre][/td][/tr] + + +[tr][td][pre] +Command: NICK +Parameters: + +NICK command is used to give user a nickname or change the existing +one. + + Numeric Replies: + + ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME + ERR_NICKNAMEINUSE ERR_NICKCOLLISION + ERR_UNAVAILRESOURCE ERR_RESTRICTED + + Examples: + + NICK Wiz ; Introducing new nick "Wiz" if session is + still unregistered, or user changing his + nickname to "Wiz" + + :WiZ!jto@tolsun.oulu.fi NICK Kilroy + ; Server telling that WiZ changed his + nickname to Kilroy. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.1.3 User message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: USER +Parameters: + +The USER command is used at the beginning of connection to specify +the username, hostname and realname of a new user. + +The parameter should be a numeric, and can be used to +automatically set user modes when registering with the server. This +parameter is a bitmask, with only 2 bits having any signification: if +the bit 2 is set, the user mode 'w' will be set and if the bit 3 is +set, the user mode 'i' will be set. (See Section 3.1.5 "User +Modes"). + +The may contain space characters. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED + + Example: + + USER guest 0 * :Ronnie Reagan ; User registering themselves with a + username of "guest" and real name + "Ronnie Reagan". + + USER guest 8 * :Ronnie Reagan ; User registering themselves with a + username of "guest" and real name + "Ronnie Reagan", and asking to be set + invisible. +[/pre][/td][/tr] + + +[tr][td][pre] +[b]3.1.4 Oper message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: OPER +Parameters: + +A normal user uses the OPER command to obtain operator privileges. +The combination of and are REQUIRED to gain +Operator privileges. Upon success, the user will receive a MODE +message (see section 3.1.5) indicating the new user modes. + + Numeric Replies: + + ERR_NEEDMOREPARAMS RPL_YOUREOPER + ERR_NOOPERHOST ERR_PASSWDMISMATCH + + Example: + + OPER foo bar ; Attempt to register as an operator + using a username of "foo" and "bar" + as the password. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.1.5 User mode message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: MODE +Parameters: +*( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) ) + +The user MODE's are typically changes which affect either how the +client is seen by others or what 'extra' messages the client is sent. + +A user MODE command MUST only be accepted if both the sender of the +message and the nickname given as a parameter are both the same. If +no other parameter is given, then the server will return the current +settings for the nick. + + The available modes are as follows: + + a - user is flagged as away; + i - marks a users as invisible; + w - user receives wallops; + r - restricted user connection; + o - operator flag; + O - local operator flag; + s - marks a user for receipt of server notices. + +Additional modes may be available later on. +The flag 'a' SHALL NOT be toggled by the user using the MODE command, +instead use of the AWAY command is REQUIRED. + +If a user attempts to make themselves an operator using the "+o" or +"+O" flag, the attempt SHOULD be ignored as users could bypass the +authentication mechanisms of the OPER command. There is no +restriction, however, on anyone `deopping' themselves (using "-o" or +"-O"). + +On the other hand, if a user attempts to make themselves unrestricted +using the "-r" flag, the attempt SHOULD be ignored. There is no +restriction, however, on anyone `deopping' themselves (using "+r"). +This flag is typically set by the server upon connection for +administrative reasons. While the restrictions imposed are left up +to the implementation, it is typical that a restricted user not be +allowed to change nicknames, nor make use of the channel operator +status on channels. + +The flag 's' is obsolete but MAY still be used. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH + ERR_UMODEUNKNOWNFLAG RPL_UMODEIS + + Examples: + + MODE WiZ -w ; Command by WiZ to turn off + reception of WALLOPS messages. + + MODE Angel +i ; Command from Angel to make herself + invisible. + + MODE WiZ -o ; WiZ 'deopping' (removing operator + status). +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.1.6 Service message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: SERVICE +Parameters: + + +The SERVICE command to register a new service. Command parameters +specify the service nickname, distribution, type and info of a new +service. +The parameter is used to specify the visibility of a +service. The service may only be known to servers which have a name +matching the distribution. For a matching server to have knowledge +of the service, the network path between that server and the server +on which the service is connected MUST be composed of servers which +names all match the mask. + +The parameter is currently reserved for future usage. + + Numeric Replies: + + ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS + ERR_ERRONEUSNICKNAME + RPL_YOURESERVICE RPL_YOURHOST + RPL_MYINFO + + Example: + + SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering + itself with a name of "dict". This + service will only be available on + servers which name matches "*.fr". +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.1.7 Quit[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: QUIT +Parameters: [ ] + +A client session is terminated with a quit message. The server +acknowledges this by sending an ERROR message to the client. + + Numeric Replies: + + None. + + Example: + + QUIT :Gone to have lunch ; Preferred message format. + + :syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch ; User + syrk has quit IRC to have lunch. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.1.8 Squit[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: SQUIT +Parameters: + +The SQUIT command is available only to operators. It is used to +disconnect server links. Also servers can generate SQUIT messages on +error conditions. A SQUIT message may also target a remote server +connection. In this case, the SQUIT message will simply be sent to +the remote server without affecting the servers in between the +operator and the remote server. + +The SHOULD be supplied by all operators who execute a SQUIT +for a remote server. The server ordered to disconnect its peer +generates a WALLOPS message with included, so that other +users may be aware of the reason of this action. + + Numeric replies: + + ERR_NOPRIVILEGES ERR_NOSUCHSERVER + ERR_NEEDMOREPARAMS + + Examples: + + SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server + tolson.oulu.fi to terminate its + connection with comment "Bad Link". + + :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command + from Trillian from to disconnect + "cm22.eng.umd.edu" from the net with + comment "Server out of control". +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2 Channel operations[/b] +[/pre][/td][/tr] + +[tr][td][pre] +This group of messages is concerned with manipulating channels, their +properties (channel modes), and their contents (typically users). +For this reason, these messages SHALL NOT be made available to +services. + +All of these messages are requests which will or will not be granted +by the server. The server MUST send a reply informing the user +whether the request was granted, denied or generated an error. When +the server grants the request, the message is typically sent back +(eventually reformatted) to the user with the prefix set to the user +itself. + +The rules governing how channels are managed are enforced by the +servers. These rules are beyond the scope of this document. More +details are found in "Internet Relay Chat: Channel Management" [IRC- +CHAN]. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.1 Join message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: JOIN +Parameters: ( *( "," ) [ *( "," ) ] ) +/ "0" + +The JOIN command is used by a user to request to start listening to +the specific channel. Servers MUST be able to parse arguments in the +form of a list of target, but SHOULD NOT use lists when sending JOIN +messages to clients. + +Once a user has joined a channel, he receives information about +all commands his server receives affecting the channel. This +includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE. +This allows channel members to keep track of the other channel +members, as well as channel modes. + +If a JOIN is successful, the user receives a JOIN message as +confirmation and is then sent the channel's topic (using RPL_TOPIC) and +the list of users who are on the channel (using RPL_NAMREPLY), which +MUST include the user joining. + +Note that this message accepts a special argument ("0"), which is +a special request to leave all channels the user is currently a member +of. The server will process this message as if the user had sent +a PART command (See Section 3.2.2) for each channel he is a member +of. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN + ERR_INVITEONLYCHAN ERR_BADCHANNELKEY + ERR_CHANNELISFULL ERR_BADCHANMASK + ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS + ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE + RPL_TOPIC + + Examples: + + JOIN #foobar ; Command to join channel #foobar. + + JOIN &foo fubar ; Command to join channel &foo using + key "fubar". + + JOIN #foo,&bar fubar ; Command to join channel #foo using + key "fubar" and &bar using no key. + + JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using + key "fubar", and channel #bar using + key "foobar". + + JOIN #foo,#bar ; Command to join channels #foo and + #bar. + + JOIN 0 ; Leave all currently joined + channels. + + :WiZ!jto@tolsun.oulu.fi JOIN #Twilight_zone ; JOIN message from WiZ + on channel #Twilight_zone +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.2 Part message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: PART +Parameters: *( "," ) [ ] + +The PART command causes the user sending the message to be removed +from the list of active members for all given channels listed in the +parameter string. If a "Part Message" is given, this will be sent +instead of the default message, the nickname. This request is always +granted by the server. + +Servers MUST be able to parse arguments in the form of a list of +target, but SHOULD NOT use lists when sending PART messages to +clients. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL + ERR_NOTONCHANNEL + + Examples: + + PART #twilight_zone ; Command to leave channel + "#twilight_zone" + + PART #oz-ops,&group5 ; Command to leave both channels + "&group5" and "#oz-ops". + + :WiZ!jto@tolsun.oulu.fi PART #playzone :I lost + ; User WiZ leaving channel + "#playzone" with the message "I + lost". +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.3 Channel mode message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: MODE +Parameters: *( ( "-" / "+" ) * * ) + +The MODE command is provided so that users may query and change the +characteristics of a channel. For more details on available modes +and their uses, see "Internet Relay Chat: Channel Management" [IRC- +CHAN]. Note that there is a maximum limit of three (3) changes per +command for modes that take a parameter. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_KEYSET + ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED + ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE + RPL_CHANNELMODEIS + RPL_BANLIST RPL_ENDOFBANLIST + RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST + RPL_INVITELIST RPL_ENDOFINVITELIST + RPL_UNIQOPIS + + The following examples are given to help understanding the syntax of + the MODE command, but refer to modes defined in "Internet Relay Chat: + Channel Management" [IRC-CHAN]. + + Examples: + + MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel + moderated and 'invite-only' with user + with a hostname matching *.fi + automatically invited. + + MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges + to Kilroy on channel #Finnish. + + MODE #Finnish +v Wiz ; Command to allow WiZ to speak on + #Finnish. + + MODE #Fins -s ; Command to remove 'secret' flag + from channel #Fins. + + MODE #42 +k oulu ; Command to set the channel key to + "oulu". + + MODE #42 -k oulu ; Command to remove the "oulu" + channel key on channel "#42". + + MODE #eu-opers +l 10 ; Command to set the limit for the + number of users on channel + "#eu-opers" to 10. + + :WiZ!jto@tolsun.oulu.fi MODE #eu-opers -l + ; User "WiZ" removing the limit for + the number of users on channel "#eu- + opers". + + MODE &oulu +b ; Command to list ban masks set for + the channel "&oulu". + + MODE &oulu +b *!*@* ; Command to prevent all users from + joining. + + MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu + ; Command to prevent any user from a + hostname matching *.edu from joining, + except if matching *.bu.edu + + MODE #bu +be *!*@*.edu *!*@*.bu.edu + ; Comment to prevent any user from a + hostname matching *.edu from joining, + except if matching *.bu.edu + + MODE #meditation e ; Command to list exception masks set + for the channel "#meditation". + + MODE #meditation I ; Command to list invitations masks + set for the channel "#meditation". + + MODE !12345ircd O ; Command to ask who the channel + creator for "!12345ircd" is +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.4 Topic message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: TOPIC +Parameters: [ ] + +The TOPIC command is used to change or view the topic of a channel. +The topic for channel is returned if there is no +given. If the parameter is present, the topic for that +channel will be changed, if this action is allowed for the user +requesting it. If the parameter is an empty string, the +topic for that channel will be removed. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL + RPL_NOTOPIC RPL_TOPIC + ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES + + Examples: + + :WiZ!jto@tolsun.oulu.fi TOPIC #test :New topic ; User Wiz setting the + topic. + + TOPIC #test :another topic ; Command to set the topic on #test + to "another topic". + + TOPIC #test : ; Command to clear the topic on + #test. + + TOPIC #test ; Command to check the topic for + #test. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.5 Names message[/b] + +Command: NAMES +Parameters: [ *( "," ) [ ] ] + +By using the NAMES command, a user can list all nicknames that are +visible to him. For more details on what is visible and what is not, +see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The + parameter specifies which channel(s) to return information +about. There is no error reply for bad channel names. + +If no parameter is given, a list of all channels and their +occupants is returned. At the end of this list, a list of users who +are visible but either not on any channel or not on a visible channel +are listed as being on `channel' "*". + +If the parameter is specified, the request is forwarded to +that server which will generate the reply. + +Wildcards are allowed in the parameter. + + Numerics: + + ERR_TOOMANYMATCHES ERR_NOSUCHSERVER + RPL_NAMREPLY RPL_ENDOFNAMES + + Examples: + + NAMES #twilight_zone,#42 ; Command to list visible users on + #twilight_zone and #42 + + NAMES ; Command to list all visible + channels and users +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.6 List message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: LIST +Parameters: [ *( "," ) [ ] ] + +The list command is used to list channels and their topics. If the + parameter is used, only the status of that channel is +displayed. + +If the parameter is specified, the request is forwarded to +that server which will generate the reply. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_TOOMANYMATCHES ERR_NOSUCHSERVER + RPL_LIST RPL_LISTEND + + Examples: + + LIST ; Command to list all channels. + + LIST #twilight_zone,#42 ; Command to list channels + #twilight_zone and #42 +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.7 Invite message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: INVITE +Parameters: + +The INVITE command is used to invite a user to a channel. The +parameter is the nickname of the person to be invited to +the target channel . There is no requirement that the +channel the target user is being invited to must exist or be a valid +channel. However, if the channel exists, only members of the channel +are allowed to invite other users. When the channel has invite-only +flag set, only channel operators may issue INVITE command. +Only the user inviting and the user being invited will receive +notification of the invitation. Other channel members are not +notified. (This is unlike the MODE changes, and is occasionally the +source of trouble for users.) + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_NOSUCHNICK + ERR_NOTONCHANNEL ERR_USERONCHANNEL + ERR_CHANOPRIVSNEEDED + RPL_INVITING RPL_AWAY + + Examples: + + :Angel!wings@irc.org INVITE Wiz #Dust + + ; Message to WiZ when he has been + invited by user Angel to channel + #Dust + + INVITE Wiz #Twilight_Zone ; Command to invite WiZ to + #Twilight_zone +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.2.8 Kick command[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: KICK +Parameters: *( "," ) *( "," ) +[] + +The KICK command can be used to request the forced removal of a user +from a channel. It causes the to PART from the by +force. For the message to be syntactically correct, there MUST be +either one channel parameter and multiple user parameter, or as many +channel parameters as there are user parameters. If a "comment" is +given, this will be sent instead of the default message, the nickname +of the user issuing the KICK. + +The server MUST NOT send KICK messages with multiple channels or +users to clients. This is necessarily to maintain backward +compatibility with old client software. + + Numeric Replies: + + ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL + ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED + ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL + + Examples: + + KICK &Melbourne Matthew ; Command to kick Matthew from + &Melbourne + + KICK #Finnish John :Speaking English + ; Command to kick John from #Finnish + using "Speaking English" as the + reason (comment). + + :WiZ!jto@tolsun.oulu.fi KICK #Finnish John + ; KICK message on channel #Finnish + from WiZ to remove John from channel +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.3 Sending messages[/b] +[/pre][/td][/tr] + +[tr][td][pre] +The main purpose of the IRC protocol is to provide a base for clients +to communicate with each other. PRIVMSG, NOTICE and SQUERY +(described in Section 3.5 on Service Query and Commands) are the only +messages available which actually perform delivery of a text message +from one client to another - the rest just make it possible and try +to ensure it happens in a reliable and structured manner. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.3.1 Private messages[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: PRIVMSG +Parameters: + +PRIVMSG is used to send private messages between users, as well as to +send messages to channels. is usually the nickname of +the recipient of the message, or a channel name. + +The parameter may also be a host mask (#) or server +mask ($). In both cases the server will only send the PRIVMSG +to those who have a server or host matching the mask. The mask MUST +have at least 1 (one) "." in it and no wildcards following the last +".". This requirement exists to prevent people sending messages to +"#*" or "$*", which would broadcast to all users. Wildcards are the +'*' and '?' characters. This extension to the PRIVMSG command is +only available to operators. + + Numeric Replies: + + ERR_NORECIPIENT ERR_NOTEXTTOSEND + ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL + ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS + ERR_NOSUCHNICK + RPL_AWAY + + Examples: + + :Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ? + ; Message from Angel to Wiz. + + PRIVMSG Angel :yes I'm receiving it ! + ; Command to send a message to Angel. + + PRIVMSG jto@tolsun.oulu.fi :Hello ! + ; Command to send a message to a user + on server tolsun.oulu.fi with + username of "jto". + + PRIVMSG kalt%millennium.stealth.net@irc.stealth.net :Are you a frog? + ; Message to a user on server + irc.stealth.net with username of + "kalt", and connected from the host + millennium.stealth.net. + + PRIVMSG kalt%millennium.stealth.net :Do you like cheese? + ; Message to a user on the local + server with username of "kalt", and + connected from the host + millennium.stealth.net. + + PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello ! + ; Message to the user with nickname + Wiz who is connected from the host + tolsun.oulu.fi and has the username + "jto". + + PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting. + ; Message to everyone on a server + which has a name matching *.fi. + + PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions + ; Message to all users who come from + a host which has a name matching + *.edu. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.3.2 Notice[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: NOTICE +Parameters: + +The NOTICE command is used similarly to PRIVMSG. The difference +between NOTICE and PRIVMSG is that automatic replies MUST NEVER be +sent in response to a NOTICE message. This rule applies to servers +too - they MUST NOT send any error reply back to the client on +receipt of a notice. The object of this rule is to avoid loops +between clients automatically sending something in response to +something it received. + +This command is available to services as well as users. + +This is typically used by services, and automatons (clients with +either an AI or other interactive program controlling their actions). + +See PRIVMSG for more details on replies and examples. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4 Server queries and commands[/b] +[/pre][/td][/tr] + +[tr][td][pre] +The server query group of commands has been designed to return +information about any server which is connected to the network. + +In these queries, where a parameter appears as , wildcard +masks are usually valid. For each parameter, however, only one query +and set of replies is to be generated. In most cases, if a nickname +is given, it will mean the server to which the user is connected. + +These messages typically have little value for services, it is +therefore RECOMMENDED to forbid services from using them. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.1 Motd message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: MOTD +Parameters: [ ] + +The MOTD command is used to get the "Message Of The Day" of the given +server, or current server if is omitted. + +Wildcards are allowed in the parameter. + + Numeric Replies: + RPL_MOTDSTART RPL_MOTD + RPL_ENDOFMOTD ERR_NOMOTD +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.2 Lusers message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: LUSERS +Parameters: [ [ ] ] + +The LUSERS command is used to get statistics about the size of the +IRC network. If no parameter is given, the reply will be about the +whole net. If a is specified, then the reply will only +concern the part of the network formed by the servers matching the +mask. Finally, if the parameter is specified, the request +is forwarded to that server which will generate the reply. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + RPL_LUSERCLIENT RPL_LUSEROP + RPL_LUSERUNKOWN RPL_LUSERCHANNELS + RPL_LUSERME ERR_NOSUCHSERVER +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.3 Version message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: VERSION +Parameters: [ ] + +The VERSION command is used to query the version of the server +program. An optional parameter is used to query the version +of the server program which a client is not directly connected to. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NOSUCHSERVER RPL_VERSION + + Examples: + + VERSION tolsun.oulu.fi ; Command to check the version of + server "tolsun.oulu.fi". +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.4 Stats message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: STATS +Parameters: [ [ ] ] + +The stats command is used to query statistics of certain server. If + parameter is omitted, only the end of stats reply is sent +back. + +A query may be given for any single letter which is only checked by +the destination server and is otherwise passed on by intermediate +servers, ignored and unaltered. + +Wildcards are allowed in the parameter. +Except for the ones below, the list of valid queries is +implementation dependent. The standard queries below SHOULD be +supported by the server: + + l - returns a list of the server's connections, showing how + long each connection has been established and the + traffic over that connection in Kbytes and messages for + each direction; + m - returns the usage count for each of commands supported + by the server; commands for which the usage count is + zero MAY be omitted; + o - returns a list of configured privileged users, + operators; + u - returns a string showing how long the server has been + up. + +It is also RECOMMENDED that client and server access configuration be +published this way. + + Numeric Replies: + + ERR_NOSUCHSERVER + RPL_STATSLINKINFO RPL_STATSUPTIME + RPL_STATSCOMMANDS RPL_STATSOLINE + RPL_ENDOFSTATS + + Examples: + + STATS m ; Command to check the command usage + for the server you are connected to +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.5 Links message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: LINKS +Parameters: [ [ ] ] + +With LINKS, a user can list all servernames, which are known by the +server answering the query. The returned list of servers MUST match +the mask, or if no mask is given, the full list is returned. + +If is given in addition to , the LINKS +command is forwarded to the first server found that matches that name +(if any), and that server is then required to answer the query. + +Numeric Replies: + + ERR_NOSUCHSERVER + RPL_LINKSRPL_ENDOFLINKS + +Examples: + +LINKS *.au ; Command to list all servers which + have a name that matches *.au; + +LINKS *.edu *.bu.edu; Command to list servers matching + *.bu.edu as seen by the first server + matching *.edu. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.6 Time message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: TIME +Parameters: [ ] + +The time command is used to query local time from the specified +server. If the parameter is not given, the server receiving +the command must reply to the query. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NOSUCHSERVER RPL_TIME + + Examples: + TIME tolsun.oulu.fi ; check the time on the server + "tolson.oulu.fi" +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.7 Connect message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: CONNECT +Parameters: [ ] + +The CONNECT command can be used to request a server to try to +establish a new connection to another server immediately. CONNECT is +a privileged command and SHOULD be available only to IRC Operators. +If a is given and its mask doesn't match name of the +parsing server, the CONNECT attempt is sent to the first match of +remote server. Otherwise the CONNECT attempt is made by the server +processing the request. + +The server receiving a remote CONNECT command SHOULD generate a +WALLOPS message describing the source and target of the request. + + Numeric Replies: + + ERR_NOSUCHSERVER ERR_NOPRIVILEGES + ERR_NEEDMOREPARAMS + + Examples: + + CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local + server to tolsun.oulu.fi on port 6667 +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.8 Trace message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: TRACE +Parameters: [ ] + +TRACE command is used to find the route to specific server and +information about its peers. Each server that processes this command +MUST report to the sender about it. The replies from pass-through +links form a chain, which shows route to destination. After sending +this reply back, the query MUST be sent to the next server until +given server is reached. + +TRACE command is used to find the route to specific server. Each +server that processes this message MUST tell the sender about it by +sending a reply indicating it is a pass-through link, forming a chain +of replies. After sending this reply back, it MUST then send the +TRACE message to the next server until given server is reached. If +the parameter is omitted, it is RECOMMENDED that TRACE +command sends a message to the sender telling which servers the local +server has direct connection to. + +If the destination given by is an actual server, the +destination server is REQUIRED to report all servers, services and +operators which are connected to it; if the command was issued by an +operator, the server MAY also report all users which are connected to +it. If the destination given by is a nickname, then only a +reply for that nickname is given. If the parameter is +omitted, it is RECOMMENDED that the TRACE command is parsed as +targeted to the processing server. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NOSUCHSERVER + + If the TRACE message is destined for another server, all + intermediate servers must return a RPL_TRACELINK reply to indicate + that the TRACE passed through it and where it is going next. + + RPL_TRACELINK + + A TRACE reply may be composed of any number of the following + numeric replies. + + RPL_TRACECONNECTING RPL_TRACEHANDSHAKE + RPL_TRACEUNKNOWN RPL_TRACEOPERATOR + RPL_TRACEUSER RPL_TRACESERVER + RPL_TRACESERVICE RPL_TRACENEWTYPE + RPL_TRACECLASS RPL_TRACELOG + RPL_TRACEEND + + Examples: + + TRACE *.oulu.fi ; TRACE to a server matching + *.oulu.fi +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.9 Admin command[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: ADMIN +Parameters: [ ] + +The admin command is used to find information about the administrator +of the given server, or current server if parameter is +omitted. Each server MUST have the ability to forward ADMIN messages +to other servers. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NOSUCHSERVER + RPL_ADMINME RPL_ADMINLOC1 + RPL_ADMINLOC2 RPL_ADMINEMAIL + + Examples: + + ADMIN tolsun.oulu.fi ; request an ADMIN reply from + tolsun.oulu.fi + + ADMIN syrk ; ADMIN request for the server to + which the user syrk is connected +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.4.10 Info command[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: INFO +Parameters: [ ] + +The INFO command is REQUIRED to return information describing the +server: its version, when it was compiled, the patchlevel, when it +was started, and any other miscellaneous information which may be +considered to be relevant. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NOSUCHSERVER + RPL_INFO RPL_ENDOFINFO + + Examples: + + INFO csd.bu.edu ; request an INFO reply from + csd.bu.edu + + INFO Angel ; request info from the server that + Angel is connected to. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.5 Service Query and Commands[/b] +[/pre][/td][/tr] +[tr][td][pre] +The service query group of commands has been designed to return +information about any service which is connected to the network. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.5.1 Servlist message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: SERVLIST +Parameters: [ [ ] ] + +The SERVLIST command is used to list services currently connected to +the network and visible to the user issuing the command. The +optional parameters may be used to restrict the result of the query +(to matching services names, and services type). + + Numeric Replies: + + RPL_SERVLIST RPL_SERVLISTEND +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.5.2 Squery[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: SQUERY +Parameters: + +The SQUERY command is used similarly to PRIVMSG. The only difference +is that the recipient MUST be a service. This is the only way for a +text message to be delivered to a service. + +See PRIVMSG for more details on replies and example. + + Examples: + + SQUERY irchelp :HELP privmsg + ; Message to the service with + nickname irchelp. + + SQUERY dict@irc.fr :fr2en blaireau + ; Message to the service with name + dict@irc.fr. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.6 User based queries[/b] +[/pre][/td][/tr] +[tr][td][pre] +User queries are a group of commands which are primarily concerned +with finding details on a particular user or group users. When using +wildcards with any of these commands, if they match, they will only +return information on users who are 'visible' to you. The visibility +of a user is determined as a combination of the user's mode and the +common set of channels you are both on. + +Although services SHOULD NOT be using this class of message, they are +allowed to. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.6.1 Who query[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: WHO +Parameters: [ [ "o" ] ] + +The WHO command is used by a client to generate a query which returns +a list of information which 'matches' the parameter given by +the client. In the absence of the parameter, all visible +(users who aren't invisible (user mode +i) and who don't have a +common channel with the requesting client) are listed. The same +result can be achieved by using a of "0" or any wildcard which +will end up matching every visible user. + +The passed to WHO is matched against users' host, server, real +name and nickname if the channel cannot be found. +If the "o" parameter is passed only operators are returned according +to the supplied. + + Numeric Replies: + + ERR_NOSUCHSERVER + RPL_WHOREPLY RPL_ENDOFWHO + + Examples: + + WHO *.fi ; Command to list all users who match + against "*.fi". + + WHO jto* o ; Command to list all users with a + match against "jto*" if they are an + operator. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.6.2 Whois query[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: WHOIS +Parameters: [ ] *( "," ) + +This command is used to query information about particular user. +The server will answer this command with several numeric messages +indicating different statuses of each user which matches the mask (if +you are entitled to see them). If no wildcard is present in the +, any information about that nick which you are allowed to see +is presented. + +If the parameter is specified, it sends the query to a +specific server. It is useful if you want to know how long the user +in question has been idle as only local server (i.e., the server the +user is directly connected to) knows that information, while +everything else is globally known. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN + RPL_WHOISUSER RPL_WHOISCHANNELS + RPL_WHOISCHANNELS RPL_WHOISSERVER + RPL_AWAY RPL_WHOISOPERATOR + RPL_WHOISIDLE ERR_NOSUCHNICK + RPL_ENDOFWHOIS + + Examples: + + WHOIS wiz ; return available user information + about nick WiZ + + WHOIS eff.org trillian ; ask server eff.org for user + information about trillian +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.6.3 Whowas[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: WHOWAS +Parameters: *( "," ) [ [ ] ] + +Whowas asks for information about a nickname which no longer exists. +This may either be due to a nickname change or the user leaving IRC. +In response to this query, the server searches through its nickname +history, looking for any nicks which are lexically the same (no wild +card matching here). The history is searched backward, returning the +most recent entry first. If there are multiple entries, up to + replies will be returned (or all of them if no +parameter is given). If a non-positive number is passed as being +, then a full search is done. + +Wildcards are allowed in the parameter. + + Numeric Replies: + + ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK + RPL_WHOWASUSER RPL_WHOISSERVER + RPL_ENDOFWHOWAS + + Examples: + + WHOWAS Wiz ; return all information in the nick + history about nick "WiZ"; + + WHOWAS Mermaid 9 ; return at most, the 9 most recent + entries in the nick history for + "Mermaid"; + + WHOWAS Trillian 1 *.edu ; return the most recent history for + "Trillian" from the first server + found to match "*.edu". +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.7 Miscellaneous messages[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Messages in this category do not fit into any of the above categories +but are nonetheless still a part of and REQUIRED by the protocol. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.7.1 Kill message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: KILL +Parameters: + +The KILL command is used to cause a client-server connection to be +closed by the server which has the actual connection. Servers +generate KILL messages on nickname collisions. It MAY also be +available available to users who have the operator status. + +Clients which have automatic reconnect algorithms effectively make +this command useless since the disconnection is only brief. It does +however break the flow of data and can be used to stop large amounts +of 'flooding' from abusive users or accidents. Abusive users usually +don't care as they will reconnect promptly and resume their abusive +behaviour. To prevent this command from being abused, any user may +elect to receive KILL messages generated for others to keep an 'eye' +on would be trouble spots. + +In an arena where nicknames are REQUIRED to be globally unique at all +times, KILL messages are sent whenever 'duplicates' are detected +(that is an attempt to register two users with the same nickname) in +the hope that both of them will disappear and only 1 reappear. + +When a client is removed as the result of a KILL message, the server +SHOULD add the nickname to the list of unavailable nicknames in an +attempt to avoid clients to reuse this name immediately which is +usually the pattern of abusive behaviour often leading to useless +"KILL loops". See the "IRC Server Protocol" document [IRC-SERVER] +for more information on this procedure. + +The comment given MUST reflect the actual reason for the KILL. For +server-generated KILLs it usually is made up of details concerning +the origins of the two conflicting nicknames. For users it is left +up to them to provide an adequate reason to satisfy others who see +it. To prevent/discourage fake KILLs from being generated to hide +the identify of the KILLer, the comment also shows a 'kill-path' +which is updated by each server it passes through, each prepending +its name to the path. + + Numeric Replies: + + ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS + ERR_NOSUCHNICK ERR_CANTKILLSERVER + +NOTE: +It is RECOMMENDED that only Operators be allowed to kill other users +with KILL command. This command has been the subject of many +controversies over the years, and along with the above +recommendation, it is also widely recognized that not even operators +should be allowed to kill users on remote servers. +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.7.2 Ping message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: PING +Parameters: [ ] + +The PING command is used to test the presence of an active client or +server at the other end of the connection. Servers send a PING +message at regular intervals if no other activity detected coming +from a connection. If a connection fails to respond to a PING +message within a set amount of time, that connection is closed. A +PING message MAY be sent even if the connection is active. + +When a PING message is received, the appropriate PONG message MUST be +sent as reply to (server which sent the PING message out) +as soon as possible. If the parameter is specified, it +represents the target of the ping, and the message gets forwarded +there. + + Numeric Replies: + + ERR_NOORIGIN ERR_NOSUCHSERVER + + Examples: + + PING tolsun.oulu.fi ; Command to send a PING message to + server + + PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING + message to server "tolsun.oulu.fi" + + PING :irc.funet.fi ; Ping message sent by server + "irc.funet.fi" +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.7.3 Pong message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: PONG +Parameters: [ ] + +PONG message is a reply to ping message. If parameter is +given, this message MUST be forwarded to given target. The +parameter is the name of the entity who has responded to PING message +and generated this message. + + Numeric Replies: + + ERR_NOORIGIN ERR_NOSUCHSERVER + + Example: + + PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to + tolsun.oulu.fi +[/pre][/td][/tr] + +[tr][td][pre] +[b]3.7.4 Error[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: ERROR +Parameters: + +The ERROR command is for use by servers when reporting a serious or +fatal error to its peers. It may also be sent from one server to +another but MUST NOT be accepted from any normal unknown clients. + +Only an ERROR message SHOULD be used for reporting errors which occur +with a server-to-server link. An ERROR message is sent to the server +at the other end (which reports it to appropriate local users and +logs) and to appropriate local users and logs. It is not to be +passed onto any other servers by a server if it is received from a +server. + +The ERROR message is also used before terminating a client +connection. + +When a server sends a received ERROR message to its operators, the +message SHOULD be encapsulated inside a NOTICE message, indicating +that the client was not responsible for the error. + + Numerics: + + None. + + Examples: + + ERROR :Server *.fi already exists ; ERROR message to the other server + which caused this error. + + NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists + ; Same ERROR message as above but + sent to user WiZ on the other server. +[/pre][/td][/tr] + +[tr][td][pre] +[b]4. Optional features[/b] +[/pre][/td][/tr] + +[tr][td][pre] +This section describes OPTIONAL messages. They are not required in a +working server implementation of the protocol described herein. In +the absence of the feature, an error reply message MUST be generated +or an unknown command error. If the message is destined for another +server to answer then it MUST be passed on (elementary parsing +REQUIRED) The allocated numerics for this are listed with the +messages below. + +From this section, only the USERHOST and ISON messages are available +to services. +[/pre][/td][/tr] + +[tr][td][pre] +[b]4.1 Away[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: AWAY +Parameters: [ ] + +With the AWAY command, clients can set an automatic reply string for +any PRIVMSG commands directed at them (not to a channel they are on). +The server sends an automatic reply to the client sending the PRIVMSG +command. The only replying server is the one to which the sending +client is connected to. + +The AWAY command is used either with one parameter, to set an AWAY +message, or with no parameters, to remove the AWAY message. + +Because of its high cost (memory and bandwidth wise), the AWAY +message SHOULD only be used for client-server communication. A +server MAY choose to silently ignore AWAY messages received from +other servers. To update the away status of a client across servers, +the user mode 'a' SHOULD be used instead. (See Section 3.1.5) + + Numeric Replies: + + RPL_UNAWAY RPL_NOWAWAY + + Example: + + AWAY :Gone to lunch. Back in 5 ; Command to set away message to + "Gone to lunch. Back in 5". +[/pre][/td][/tr] + +[tr][td][pre] +[b]4.2 Rehash message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: REHASH +Parameters: None + +The rehash command is an administrative command which can be used by +an operator to force the server to re-read and process its +configuration file. + + Numeric Replies: + + RPL_REHASHING ERR_NOPRIVILEGES + + + Example: + + REHASH ; message from user with operator + status to server asking it to reread + its configuration file. +[/pre][/td][/tr] + +[tr][td][pre] +[b]4.3 Die message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: DIE +Parameters: None + +An operator can use the DIE command to shutdown the server. This +message is optional since it may be viewed as a risk to allow +arbitrary people to connect to a server as an operator and execute +this command. + +The DIE command MUST always be fully processed by the server to which +the sending client is connected and MUST NOT be passed onto other +connected servers. + + Numeric Replies: + + ERR_NOPRIVILEGES + + Example: + + DIE ; no parameters required. +[/pre][/td][/tr] + +[tr][td][pre] +[b]4.4 Restart message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: RESTART +Parameters: None + +An operator can use the restart command to force the server to +restart itself. This message is optional since it may be viewed as a +risk to allow arbitrary people to connect to a server as an operator +and execute this command, causing (at least) a disruption to service. + +The RESTART command MUST always be fully processed by the server to +which the sending client is connected and MUST NOT be passed onto +other connected servers. + + Numeric Replies: + + ERR_NOPRIVILEGES + + Example: + + RESTART ; no parameters required. +[/pre][/td][/tr] + +[tr][td][pre] +[b]4.5 Summon message[/b] +[/pre][/td][/tr] + +[tr][td][pre] +Command: SUMMON +Parameters: [ [ ] ] + +The SUMMON command can be used to give users who are on a host +running an IRC server a message asking them to please join IRC. This +message is only sent if the target server (a) has SUMMON enabled, (b) +the user is logged in and (c) the server process can write to the +user's tty (or similar). + +If no parameter is given it tries to summon from the +server the client is connected to is assumed as the target. + +If summon is not enabled in a server, it MUST return the +ERR_SUMMONDISABLED numeric. + + Numeric Replies: + + ERR_NORECIPIENT ERR_FILEERROR + ERR_NOLOGIN ERR_NOSUCHSERVER + ERR_SUMMONDISABLED RPL_SUMMONING + + Examples: + + SUMMON jto ; summon user jto on the server's + host + + SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a + server named "tolsun.oulu.fi" is + running. +[/pre][/td][/tr] + +[tr][td] +[b]4.6 Users[/b] +[/td][/tr] + +[tr][td][pre] +Command: USERS +Parameters: [ ] + +The USERS command returns a list of users logged into the server in a +format similar to the UNIX commands who(1), rusers(1) and finger(1). +If disabled, the correct numeric MUST be returned to indicate this. + +Because of the security implications of such a command, it SHOULD be +disabled by default in server implementations. Enabling it SHOULD +require recompiling the server or some equivalent change rather than +simply toggling an option and restarting the server. The procedure +to enable this command SHOULD also include suitable large comments. + + Numeric Replies: + + ERR_NOSUCHSERVER ERR_FILEERROR + RPL_USERSSTART RPL_USERS + RPL_NOUSERS RPL_ENDOFUSERS + ERR_USERSDISABLED + + Disabled Reply: + + ERR_USERSDISABLED + + Example: + + USERS eff.org ; request a list of users logged in + on server eff.org +[/pre][/td][/tr] + +[tr][td] +[b]4.7 Operwall message[/b] +[/td][/tr] + +[tr][td][pre] +Command: WALLOPS +Parameters: + +The WALLOPS command is used to send a message to all currently +connected users who have set the 'w' user mode for themselves. (See +Section 3.1.5 "User modes"). +After implementing WALLOPS as a user command it was found that it was +often and commonly abused as a means of sending a message to a lot of +people. Due to this, it is RECOMMENDED that the implementation of +WALLOPS allows and recognizes only servers as the originators of +WALLOPS. + + Numeric Replies: + + ERR_NEEDMOREPARAMS + + Example: + + :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS + message from csd.bu.edu announcing a + CONNECT message it received from + Joshua and acted upon. +[/pre][/td][/tr] + +[tr][td] +[b]4.8 Userhost message[/b] +[/td][/tr] + +[tr][td][pre] +Command: USERHOST +Parameters: *( SPACE ) + +The USERHOST command takes a list of up to 5 nicknames, each +separated by a space character and returns a list of information +about each nickname that it found. The returned list has each reply +separated by a space. + + Numeric Replies: + + RPL_USERHOST ERR_NEEDMOREPARAMS + + Example: + + USERHOST Wiz Michael syrk ; USERHOST request for information on + nicks "Wiz", "Michael", and "syrk" + + :ircd.stealth.net 302 yournick :syrk=+syrk@millennium.stealth.net + ; Reply for user syrk +[/pre][/td][/tr] + +[tr][td] +[b]4.9 Ison message[/b] +[/td][/tr] + +[tr][td][pre] +Command: ISON +Parameters: *( SPACE ) + +The ISON command was implemented to provide a quick and efficient +means to get a response about whether a given nickname was currently +on IRC. ISON only takes one (1) type of parameter: a space-separated +list of nicks. For each nickname in the list that is present, the +server adds that to its reply string. Thus the reply string may +return empty (none of the given nicks are present), an exact copy of +the parameter string (all of them present) or any other subset of the +set of nicks given in the parameter. The only limit on the number of +nicks that may be checked is that the combined length MUST NOT be too +large as to cause the server to chop it off so it fits in 512 +characters. + +ISON is only processed by the server local to the client sending the +command and thus not passed onto other servers for further +processing. + + Numeric Replies: + + RPL_ISON ERR_NEEDMOREPARAMS + + Example: + + ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk + ; Sample ISON request for 7 nicks. +[/pre][/td][/tr] + +[tr][td] +[b]5. Replies[/b] +[/td][/tr] + +[tr][td] +The following is a list of numeric replies which are generated in +response to the commands given above. Each numeric is given with its +number, name and reply string. +[/td][/tr] + +[tr][td] +[b]5.1 Command responses[/b] +[/td][/tr] + +[tr][td] +Numerics in the range from 001 to 099 are used for client-server +connections only and should never travel between servers. Replies +generated in the response to commands are found in the range from 200 +to 399. +[p] +[pre] + 001 RPL_WELCOME + "Welcome to the Internet Relay Network + !@" + 002 RPL_YOURHOST + "Your host is , running version " + 003 RPL_CREATED + "This server was created " + 004 RPL_MYINFO + " + " + + - The server sends Replies 001 to 004 to a user upon + successful registration. + + 005 RPL_BOUNCE + "Try server , port " + + - Sent by the server to a user to suggest an alternative + server. This is often used when the connection is + refused because the server is already full. + + 302 RPL_USERHOST + ":*1 *( " " )" + + - Reply format used by USERHOST to list replies to + the query list. The reply string is composed as + follows: + + reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname + + The '*' indicates whether the client has registered + as an Operator. The '-' or '+' characters represent + whether the client has set an AWAY message or not + respectively. + + 303 RPL_ISON + ":*1 *( " " )" + + - Reply format used by ISON to list replies to the + query list. + + 301 RPL_AWAY + " :" + 305 RPL_UNAWAY + ":You are no longer marked as being away" + 306 RPL_NOWAWAY + ":You have been marked as being away" + + - These replies are used with the AWAY command (if + allowed). RPL_AWAY is sent to any client sending a + PRIVMSG to a client which is away. RPL_AWAY is only + sent by the server to which the client is connected. + Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the + client removes and sets an AWAY message. + + 311 RPL_WHOISUSER + " * :" + 312 RPL_WHOISSERVER + " :" + 313 RPL_WHOISOPERATOR + " :is an IRC operator + 317 RPL_WHOISIDLE + " :seconds idle" + 318 RPL_ENDOFWHOIS + " :End of WHOIS list" + 319 RPL_WHOISCHANNELS + " :*( ( "@" / "+" ) " " )" + + - Replies 311 - 313, 317 - 319 are all replies + generated in response to a WHOIS message. Given that + there are enough parameters present, the answering + server MUST either formulate a reply out of the above + numerics (if the query nick is found) or return an + error reply. The '*' in RPL_WHOISUSER is there as + the literal character and not as a wild card. For + each reply set, only RPL_WHOISCHANNELS may appear + more than once (for long lists of channel names). + The '@' and '+' characters next to the channel name + indicate whether a client is a channel operator or + has been granted permission to speak on a moderated + channel. The RPL_ENDOFWHOIS reply is used to mark + the end of processing a WHOIS message. + + 314 RPL_WHOWASUSER + " * :" + 369 RPL_ENDOFWHOWAS + " :End of WHOWAS" + + - When replying to a WHOWAS message, a server MUST use + the replies RPL_WHOWASUSER, RPL_WHOISSERVER or + ERR_WASNOSUCHNICK for each nickname in the presented + list. At the end of all reply batches, there MUST + be RPL_ENDOFWHOWAS (even if there was only one reply + and it was an error). + + 321 RPL_LISTSTART + Obsolete. Not used. + + 322 RPL_LIST + " <# visible> :" + 323 RPL_LISTEND + ":End of LIST" + + - Replies RPL_LIST, RPL_LISTEND mark the actual replies + with data and end of the server's response to a LIST + command. If there are no channels available to return, + only the end reply MUST be sent. + + 325 RPL_UNIQOPIS + " " + + 324 RPL_CHANNELMODEIS + " " + + 331 RPL_NOTOPIC + " :No topic is set" + 332 RPL_TOPIC + " :" + + - When sending a TOPIC message to determine the + channel topic, one of two replies is sent. If + the topic is set, RPL_TOPIC is sent back else + RPL_NOTOPIC. + + 341 RPL_INVITING + " " + + - Returned by the server to indicate that the + attempted INVITE message was successful and is + being passed onto the end client. + + 342 RPL_SUMMONING + " :Summoning user to IRC" + + - Returned by a server answering a SUMMON message to + indicate that it is summoning that user. + + 346 RPL_INVITELIST + " " + 347 RPL_ENDOFINVITELIST + " :End of channel invite list" + + - When listing the 'invitations masks' for a given channel, + a server is required to send the list back using the + RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A + separate RPL_INVITELIST is sent for each active mask. + After the masks have been listed (or if none present) a + RPL_ENDOFINVITELIST MUST be sent. + + 348 RPL_EXCEPTLIST + " " + 349 RPL_ENDOFEXCEPTLIST + " :End of channel exception list" + + - When listing the 'exception masks' for a given channel, + a server is required to send the list back using the + RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A + separate RPL_EXCEPTLIST is sent for each active mask. + After the masks have been listed (or if none present) + a RPL_ENDOFEXCEPTLIST MUST be sent. + + 351 RPL_VERSION + ". :" + + - Reply by the server showing its version details. + The is the version of the software being + used (including any patchlevel revisions) and the + is used to indicate if the server is + running in "debug mode". + + The "comments" field may contain any comments about + the version or further version details. + + 352 RPL_WHOREPLY + " + ( "H" / "G" > ["*"] [ ( "@" / "+" ) ] + : " + + 315 RPL_ENDOFWHO + " :End of WHO list" + + - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used + to answer a WHO message. The RPL_WHOREPLY is only + sent if there is an appropriate match to the WHO + query. If there is a list of parameters supplied + with a WHO message, a RPL_ENDOFWHO MUST be sent + after processing each list item with being + the item. + + 353 RPL_NAMREPLY + "( "=" / "*" / "@" ) + :[ "@" / "+" ] *( " " [ "@" / "+" ] ) + - "@" is used for secret channels, "*" for private + channels, and "=" for others (public channels). + + 366 RPL_ENDOFNAMES + " :End of NAMES list" + + - To reply to a NAMES message, a reply pair consisting + of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the + server back to the client. If there is no channel + found as in the query, then only RPL_ENDOFNAMES is + returned. The exception to this is when a NAMES + message is sent with no parameters and all visible + channels and contents are sent back in a series of + RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark + the end. + + 364 RPL_LINKS + " : " + 365 RPL_ENDOFLINKS + " :End of LINKS list" + + - In replying to the LINKS message, a server MUST send + replies back using the RPL_LINKS numeric and mark the + end of the list using an RPL_ENDOFLINKS reply. + + 367 RPL_BANLIST + " " + 368 RPL_ENDOFBANLIST + " :End of channel ban list" + + - When listing the active 'bans' for a given channel, + a server is required to send the list back using the + RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate + RPL_BANLIST is sent for each active banmask. After the + banmasks have been listed (or if none present) a + RPL_ENDOFBANLIST MUST be sent. + + 371 RPL_INFO + ":" + 374 RPL_ENDOFINFO + ":End of INFO list" + + - A server responding to an INFO message is required to + send all its 'info' in a series of RPL_INFO messages + with a RPL_ENDOFINFO reply to indicate the end of the + replies. + + 375 RPL_MOTDSTART + ":- Message of the day - " + 372 RPL_MOTD + ":- " + 376 RPL_ENDOFMOTD + ":End of MOTD command" + + - When responding to the MOTD message and the MOTD file + is found, the file is displayed line by line, with + each line no longer than 80 characters, using + RPL_MOTD format replies. These MUST be surrounded + by a RPL_MOTDSTART (before the RPL_MOTDs) and an + RPL_ENDOFMOTD (after). + + 381 RPL_YOUREOPER + ":You are now an IRC operator" + + - RPL_YOUREOPER is sent back to a client which has + just successfully issued an OPER message and gained + operator status. + + 382 RPL_REHASHING + " :Rehashing" + + - If the REHASH option is used and an operator sends + a REHASH message, an RPL_REHASHING is sent back to + the operator. + + 383 RPL_YOURESERVICE + "You are service " + + - Sent by the server to a service upon successful + registration. + + 391 RPL_TIME + " :" + + - When replying to the TIME message, a server MUST send + the reply using the RPL_TIME format above. The string + showing the time need only contain the correct day and + time there. There is no further requirement for the + time string. + + 392 RPL_USERSSTART + ":UserID Terminal Host" + 393 RPL_USERS + ": " + 394 RPL_ENDOFUSERS + ":End of users" + 395 RPL_NOUSERS + ":Nobody logged in" + + - If the USERS message is handled by a server, the + replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and + RPL_NOUSERS are used. RPL_USERSSTART MUST be sent + first, following by either a sequence of RPL_USERS + or a single RPL_NOUSER. Following this is + RPL_ENDOFUSERS. + + 200 RPL_TRACELINK + "Link + V + + " + 201 RPL_TRACECONNECTING + "Try. " + 202 RPL_TRACEHANDSHAKE + "H.S. " + 203 RPL_TRACEUNKNOWN + "???? []" + 204 RPL_TRACEOPERATOR + "Oper " + 205 RPL_TRACEUSER + "User " + 206 RPL_TRACESERVER + "Serv S C + @ V" + 207 RPL_TRACESERVICE + "Service " + 208 RPL_TRACENEWTYPE + " 0 " + 209 RPL_TRACECLASS + "Class " + 210 RPL_TRACERECONNECT + Unused. + 261 RPL_TRACELOG + "File " + 262 RPL_TRACEEND + " :End of TRACE" + + - The RPL_TRACE* are all returned by the server in + response to the TRACE message. How many are + returned is dependent on the TRACE message and + whether it was sent by an operator or not. There + is no predefined order for which occurs first. + Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and + RPL_TRACEHANDSHAKE are all used for connections + which have not been fully established and are either + unknown, still attempting to connect or in the + process of completing the 'server handshake'. + RPL_TRACELINK is sent by any server which handles + a TRACE message and has to pass it on to another + server. The list of RPL_TRACELINKs sent in + response to a TRACE command traversing the IRC + network should reflect the actual connectivity of + the servers themselves along that path. + RPL_TRACENEWTYPE is to be used for any connection + which does not fit in the other categories but is + being displayed anyway. + RPL_TRACEEND is sent to indicate the end of the list. + + 211 RPL_STATSLINKINFO + " + +