1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
|
<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Common First Steps — Eggdrop 1.10.1rc2 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="../_static/eggdrop.css?v=ab48a1b6" />
<script src="../_static/documentation_options.js?v=290de6c6"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Enabling TLS Security on Eggdrop" href="tlssetup.html" />
<link rel="prev" title="Setting Up Eggdrop" href="setup.html" />
</head><body>
<div class="header-wrapper" role="banner">
<div class="header">
<div class="headertitle"><a
href="../index.html">Eggdrop 1.10.1rc2 documentation</a></div>
<div class="rel" role="navigation" aria-label="related navigation">
<a href="setup.html" title="Setting Up Eggdrop"
accesskey="P">previous</a> |
<a href="tlssetup.html" title="Enabling TLS Security on Eggdrop"
accesskey="N">next</a>
</div>
</div>
</div>
<div class="content-wrapper">
<div class="content">
<div class="sidebar">
<h3>Table of Contents</h3>
<p class="caption" role="heading"><span class="caption-text">Installing Eggdrop</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../install/readme.html">README</a></li>
<li class="toctree-l1"><a class="reference internal" href="../install/install.html">Installing Eggdrop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../install/upgrading.html">Upgrading Eggdrop</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Using Eggdrop</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../using/features.html">Eggdrop Features</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/core.html">Eggdrop Core Settings</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/partyline.html">The Party Line</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/autoscripts.html">Eggdrop Autoscripts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/users.html">Users and Flags</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/bans.html">Bans, Invites, and Exempts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/botnet.html">Botnet Sharing and Linking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/ipv6.html">IPv6 support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/tls.html">TLS support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/ircv3.html">IRCv3 support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/accounts.html">Account tracking in Eggdrop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/pbkdf2info.html">Encryption/Hashing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/python.html">Using the Python Module</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/twitchinfo.html">Twitch</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/tricks.html">Advanced Tips</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/text-sub.html">Textfile Substitutions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/tcl-commands.html">Eggdrop Tcl Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/twitch-tcl-commands.html">Eggdrop Twitch Tcl Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="../using/patch.html">Patching Eggdrop</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Tutorials</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="setup.html">Setting Up Eggdrop</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Common First Steps</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#log-on-to-the-partyline">Log on to the partyline</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id1">Common first steps</a></li>
<li class="toctree-l2"><a class="reference internal" href="#automatically-restarting-an-eggdrop">Automatically restarting an Eggdrop</a></li>
<li class="toctree-l2"><a class="reference internal" href="#authenticating-with-nickserv">Authenticating with NickServ</a></li>
<li class="toctree-l2"><a class="reference internal" href="#setting-up-sasl-authentication">Setting up SASL authentication</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="tlssetup.html">Enabling TLS Security on Eggdrop</a></li>
<li class="toctree-l1"><a class="reference internal" href="userfilesharing.html">Sharing Userfiles</a></li>
<li class="toctree-l1"><a class="reference internal" href="firstscript.html">Writing an Eggdrop Tcl Script</a></li>
<li class="toctree-l1"><a class="reference internal" href="module.html">Writing a Basic Eggdrop Module</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Eggdrop Modules</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../modules/index.html">Eggdrop Module Information</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/included.html">Modules included with Eggdrop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/writing.html">How to Write an Eggdrop Module</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/internals.html">Eggdrop Bind Internals</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">About Eggdrop</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../about/about.html">About Eggdrop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../about/legal.html">Boring legal stuff</a></li>
</ul>
<div role="search">
<h3 style="margin-top: 1.5em;">Search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="common-first-steps">
<h1>Common First Steps<a class="headerlink" href="#common-first-steps" title="Link to this heading">¶</a></h1>
<section id="log-on-to-the-partyline">
<h2>Log on to the partyline<a class="headerlink" href="#log-on-to-the-partyline" title="Link to this heading">¶</a></h2>
<p>Now that your bot is online, you’ll want to join the partyline to further use the bot. First, read what it tells you when you started it up:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">STARTING</span> <span class="n">BOT</span> <span class="n">IN</span> <span class="n">USERFILE</span> <span class="n">CREATION</span> <span class="n">MODE</span><span class="o">.</span>
<span class="n">Telnet</span> <span class="n">to</span> <span class="n">the</span> <span class="n">bot</span> <span class="ow">and</span> <span class="n">enter</span> <span class="s1">'NEW'</span> <span class="k">as</span> <span class="n">your</span> <span class="n">nickname</span><span class="o">.</span>
<span class="n">OR</span> <span class="n">go</span> <span class="n">to</span> <span class="n">IRC</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">:</span> <span class="o">/</span><span class="n">msg</span> <span class="n">BotNick</span> <span class="n">hello</span>
<span class="n">This</span> <span class="n">will</span> <span class="n">make</span> <span class="n">the</span> <span class="n">bot</span> <span class="n">recognize</span> <span class="n">you</span> <span class="k">as</span> <span class="n">the</span> <span class="n">master</span><span class="o">.</span>
</pre></div>
</div>
<p>You can either telnet to the bot, or connect to the bot using DCC Chat. To telnet, you’ll either need a program like Putty (Windows), or you can do it from the command line of your shell using the telnet command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">telnet</span> <span class="o"><</span><span class="n">IP</span> <span class="n">of</span> <span class="n">bot</span><span class="o">></span> <span class="o"><</span><span class="n">listen</span> <span class="n">port</span><span class="o">></span>
</pre></div>
</div>
<p>You can find the IP and port the bot is listening on by a) remembering what you set in the config file ;) or b) reading the display the bot presented when it started up. Look for a line that looks similar to this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Listening</span> <span class="k">for</span> <span class="n">telnet</span> <span class="n">connections</span> <span class="n">on</span> <span class="mf">2.4.6.9</span><span class="p">:</span><span class="mi">3183</span> <span class="p">(</span><span class="nb">all</span><span class="p">)</span><span class="o">.</span>
</pre></div>
</div>
<p>This tells you that the bot is listening on IP 2.4.6.9, port 3183. If you see 0.0.0.0 listed, that means Eggdrop is listening on all available IPs on that particular host.</p>
<p>If you choose not to telnet to connect to the partyline, you can either <code class="docutils literal notranslate"><span class="pre">/dcc</span> <span class="pre">chat</span> <span class="pre">BotNick</span></code> or <code class="docutils literal notranslate"><span class="pre">/ctcp</span> <span class="pre">BotNick</span> <span class="pre">chat</span></code>. If one of those methods does not work for you, try the other. Once you’re on the bot for the first time, type <code class="docutils literal notranslate"><span class="pre">.help</span></code> for a short list of available commands, or <code class="docutils literal notranslate"><span class="pre">.help</span> <span class="pre">all</span></code> for a more thorough list.</p>
</section>
<section id="id1">
<h2>Common first steps<a class="headerlink" href="#id1" title="Link to this heading">¶</a></h2>
<p>To learn more about any of these commands, type .help <command> on the partyline. It will provide you the syntax you need, as well as a short description of how to use the command.</p>
<section id="join-a-channel">
<h3>Join a Channel<a class="headerlink" href="#join-a-channel" title="Link to this heading">¶</a></h3>
<p>To tell the Eggdrop to join a channel, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.+</span><span class="n">chan</span> <span class="c1">#channel</span>
</pre></div>
</div>
</section>
<section id="add-a-user">
<h3>Add a User<a class="headerlink" href="#add-a-user" title="Link to this heading">¶</a></h3>
<p>To add a user to the bot, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.+</span><span class="n">user</span> <span class="o"><</span><span class="n">handle</span><span class="o">></span>
</pre></div>
</div>
</section>
<section id="add-a-host-to-a-user">
<h3>Add a Host to a User<a class="headerlink" href="#add-a-host-to-a-user" title="Link to this heading">¶</a></h3>
<p>The handle is the name that the bot uses to track a user. No matter what nickname on IRC a user uses, a single handle is used to track the user by their hostmask. To add a hostmask of a user to a handle, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.+</span><span class="n">host</span> <span class="o"><</span><span class="n">handle</span><span class="o">></span> <span class="o"><</span><span class="n">hostmask</span><span class="o">></span>
</pre></div>
</div>
<p>where the hostmask is in the format of <nick>!<ident>@hostname.com . Wildcards can be used; common formats are <a class="reference external" href="mailto:*!*%40hostname.com">*!*<span>@</span>hostname<span>.</span>com</a> for static hosts, or <a class="reference external" href="mailto:*!ident%40*.foo.com">*!ident<span>@</span>*<span>.</span>foo<span>.</span>com</a> for dynamic hostnames.</p>
</section>
<section id="assign-permission-flags">
<h3>Assign Permission Flags<a class="headerlink" href="#assign-permission-flags" title="Link to this heading">¶</a></h3>
<p>To assign an access level to a user, first read <code class="docutils literal notranslate"><span class="pre">.help</span> <span class="pre">whois</span></code> for a listing of possible access levels and their corresponding flags. Then, assign the desired flag to the user with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.</span><span class="n">chattr</span> <span class="o"><+</span><span class="n">flag</span><span class="o">></span> <span class="o"><</span><span class="n">handle</span><span class="o">></span>
</pre></div>
</div>
<p>So to grant a user the voice flag, you would do:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.</span><span class="n">chattr</span> <span class="o">+</span><span class="n">v</span> <span class="n">handle</span>
</pre></div>
</div>
<p>It is important to note that, when on the partyline, you want to use the handle of the user, not their current nickname.</p>
</section>
<section id="configure-channel-settings">
<h3>Configure Channel Settings<a class="headerlink" href="#configure-channel-settings" title="Link to this heading">¶</a></h3>
<p>Finally, Eggdrop is often used to moderate and control channels. This is done via the <code class="docutils literal notranslate"><span class="pre">.chanset</span></code> command. To learn more about the (numerous!) settings that can be used to control a channel, read:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.</span><span class="n">help</span> <span class="n">chaninfo</span>
</pre></div>
</div>
<p>Common uses involve setting channels modes. This can be done with the chanmode channel setting:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.</span><span class="n">chanset</span> <span class="c1">#channel chanmode +snt</span>
</pre></div>
</div>
<p>which will enforce the s, n, and t flags on a channel.</p>
</section>
</section>
<section id="automatically-restarting-an-eggdrop">
<h2>Automatically restarting an Eggdrop<a class="headerlink" href="#automatically-restarting-an-eggdrop" title="Link to this heading">¶</a></h2>
<p>A common question asked by users is, how can I configure Eggdrop to automatically restart should it die, such as after a reboot? Historically, Eggdrop relied on the host’s crontab system to run a script (called botchk) every ten minutes to see if the eggdrop is running. If the eggdrop is not running, the script will restart the bot, with an optional email sent to the user informing them of the action. Newer Linux systems come with systemd, which can provide better real-time monitoring of processes such as Eggdrop. You probably want to use systemd if your system has it.</p>
<section id="crontab-method">
<h3>Crontab Method<a class="headerlink" href="#crontab-method" title="Link to this heading">¶</a></h3>
<ol class="arabic">
<li><p>Enter the directory you installed your Eggdrop to. Most commonly, this is ~/eggdrop (also known as /home/<username>/eggdrop).</p></li>
<li><p>Just humor us- run <code class="docutils literal notranslate"><span class="pre">./scripts/autobotchk</span></code> without any arguments and read the options available to you. They’re listed there for a reason!</p></li>
<li><p>If you don’t want to customize anything via the options listed in #2, you can install a crontab job to start Eggdrop simply by running:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">scripts</span><span class="o">/</span><span class="n">autobotchk</span> <span class="n">yourEggdropConfigNameHere</span><span class="o">.</span><span class="n">conf</span>
</pre></div>
</div>
</li>
<li><p>Review the output of the script, and verify your new crontab entry by typing:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">crontab</span> <span class="o">-</span><span class="n">l</span>
</pre></div>
</div>
</li>
</ol>
<p>By default, it should create an entry that looks similar to:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">40</span><span class="p">,</span><span class="mi">50</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">user</span><span class="o">/</span><span class="n">bot</span><span class="o">/</span><span class="n">scripts</span><span class="o">/</span><span class="n">YourEggdrop</span><span class="o">.</span><span class="n">botchk</span> <span class="mi">2</span><span class="o">>&</span><span class="mi">1</span>
</pre></div>
</div>
<p>This will run the generated botchk script every ten minutes and restart your Eggdrop if it is not running during the check. Also note that if you run autobotchk from the scripts directory, you’ll have to manually specify your config file location with the -dir option. To remove a crontab entry, use <code class="docutils literal notranslate"><span class="pre">crontab</span> <span class="pre">-e</span></code> to open the crontab file in your system’s default editor and remove the crontab line.</p>
</section>
<section id="systemd-method-newer-linux-systems">
<h3>Systemd Method (Newer Linux Systems)<a class="headerlink" href="#systemd-method-newer-linux-systems" title="Link to this heading">¶</a></h3>
<ol class="arabic">
<li><p>Enter the directory you installed your Eggdrop to. Most commonly, this is ~/eggdrop (also known as /home/<username>/eggdrop).</p></li>
<li><p>Install the systemd job for Eggdrop simply by running:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">scripts</span><span class="o">/</span><span class="n">autobotchk</span> <span class="n">yourEggdropConfigNameHere</span><span class="o">.</span><span class="n">conf</span> <span class="o">-</span><span class="n">systemd</span>
</pre></div>
</div>
</li>
<li><p>Note the output at the end of the script informing you of the command you can use to start/stop the Eggdrop in thee future. For example, to manually start the Eggdrop, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="o">--</span><span class="n">user</span> <span class="n">start</span> <span class="o"><</span><span class="n">botname</span><span class="o">>.</span><span class="n">service</span>
</pre></div>
</div>
</li>
</ol>
<p>To stop Eggdrop, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="o">--</span><span class="n">user</span> <span class="n">stop</span> <span class="o"><</span><span class="n">botname</span><span class="o">>.</span><span class="n">service</span>
</pre></div>
</div>
<p>To rehash (not reload) Eggdrop, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="o">--</span><span class="n">user</span> <span class="n">reload</span> <span class="o"><</span><span class="n">botname</span><span class="o">>.</span><span class="n">service</span>
</pre></div>
</div>
<p>(Yes, we acknowledge the confusion that the systemd reload command will execute the Eggdrop ‘.rehash’ command, not the ‘.reload’ command. Unfortunately, systemd did not consult us when choosing its commands!)</p>
<p>To prevent Eggdrop from automatically running after a system start, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="o">--</span><span class="n">user</span> <span class="n">disable</span> <span class="o"><</span><span class="n">botname</span><span class="o">>.</span><span class="n">service</span>
</pre></div>
</div>
<p>To re-enable Eggdrop automatically starting after a system start, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="o">--</span><span class="n">user</span> <span class="n">enable</span> <span class="o"><</span><span class="n">botname</span><span class="o">>.</span><span class="n">service</span>
</pre></div>
</div>
</section>
</section>
<section id="authenticating-with-nickserv">
<h2>Authenticating with NickServ<a class="headerlink" href="#authenticating-with-nickserv" title="Link to this heading">¶</a></h2>
<p>Many IRC features require you to authenticate with NickServ to use them. You can do this from your config file by searching for the line:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># putserv "PRIVMSG NickServ :identify <password>"</span>
</pre></div>
</div>
<p>in your config file. Uncomment it by removing the ‘#’ sign and then replace <password> with your password. Your bot will now authenticate with NickServ each time it joins a server.</p>
</section>
<section id="setting-up-sasl-authentication">
<h2>Setting up SASL authentication<a class="headerlink" href="#setting-up-sasl-authentication" title="Link to this heading">¶</a></h2>
<p>Simple Authentication and Security Layer (SASL) is becoming a prevalant method of authenticating with IRC services such as NickServ prior to your client finalizing a connection to the IRC server, eliminating the need to /msg NickServ to identify yourself. In other words, you can authenticate with NickServ and do things like receive a cloaked hostmask before your client ever appears on the IRC server. Eggdrop supports three methods of SASL authentication, set via the sasl-mechanism setting:</p>
<ul>
<li><p><strong>PLAIN</strong>: To use this method, set sasl-mechanism to 0. This method passes the username and password (set in the sasl-username and sasl-password config file settings) to the IRC server in plaintext. If you only connect to the IRC server using a connection protected by SSL/TLS this is a generally safe method of authentication; however you probably want to avoid this method if you connect to a server on a non-protected port as the exchange itself is not encrypted.</p></li>
<li><p><strong>ECDSA-NIST256P-CHALLENGE</strong>: To use this method, set sasl-mechanism to 1. This method uses a public/private keypair to authenticate, so no username/password is required. Not all servers support this method. If your server does support this, you you must generate a certificate pair using:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">ecparam</span> <span class="o">-</span><span class="n">genkey</span> <span class="o">-</span><span class="n">name</span> <span class="n">prime256v1</span> <span class="o">-</span><span class="n">out</span> <span class="n">eggdrop</span><span class="o">-</span><span class="n">ecdsa</span><span class="o">.</span><span class="n">pem</span>
</pre></div>
</div>
<p>You will need to determine your public key fingerprint by using:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">ec</span> <span class="o">-</span><span class="n">noout</span> <span class="o">-</span><span class="n">text</span> <span class="o">-</span><span class="n">conv_form</span> <span class="n">compressed</span> <span class="o">-</span><span class="ow">in</span> <span class="n">eggdrop</span><span class="o">-</span><span class="n">ecdsa</span><span class="o">.</span><span class="n">pem</span> <span class="o">|</span> <span class="n">grep</span> <span class="s1">'^pub:'</span> <span class="o">-</span><span class="n">A</span> <span class="mi">3</span> <span class="o">|</span> <span class="n">tail</span> <span class="o">-</span><span class="n">n</span> <span class="mi">3</span> <span class="o">|</span> <span class="n">tr</span> <span class="o">-</span><span class="n">d</span> <span class="s1">' </span><span class="se">\n</span><span class="s1">:'</span> <span class="o">|</span> <span class="n">xxd</span> <span class="o">-</span><span class="n">r</span> <span class="o">-</span><span class="n">p</span> <span class="o">|</span> <span class="n">base64</span>
</pre></div>
</div>
<p>Then, authenticate with your NickServ service and register your public certificate with NickServ. You can view your public key On Libera for example, it is done by:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">msg</span> <span class="n">NickServ</span> <span class="nb">set</span> <span class="n">pubkey</span> <span class="o"><</span><span class="n">fingerprint</span> <span class="n">string</span> <span class="kn">from</span><span class="w"> </span><span class="nn">above</span> <span class="n">goes</span> <span class="n">here</span><span class="o">></span>
</pre></div>
</div>
</li>
<li><p><strong>EXTERNAL</strong>: To use this method, set sasl-mechanism to 2. This method allows you to use other TLS certificates to connect to the IRC server, if the IRC server supports it. An EXTERNAL authentication method usually requires you to connect to the IRC server using SSL/TLS. There are many ways to generate certificates; one such way is generating your own certificate using:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">new</span> <span class="o">-</span><span class="n">x509</span> <span class="o">-</span><span class="n">nodes</span> <span class="o">-</span><span class="n">keyout</span> <span class="n">eggdrop</span><span class="o">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">eggdrop</span><span class="o">.</span><span class="n">crt</span>
</pre></div>
</div>
</li>
</ul>
<p>You will need to determine your public key fingerprint by using:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">x509</span> <span class="o">-</span><span class="ow">in</span> <span class="n">eggdrop</span><span class="o">.</span><span class="n">crt</span> <span class="o">-</span><span class="n">outform</span> <span class="n">der</span> <span class="o">|</span> <span class="n">sha1sum</span> <span class="o">-</span><span class="n">b</span> <span class="o">|</span> <span class="n">cut</span> <span class="o">-</span><span class="n">d</span><span class="s1">' '</span> <span class="o">-</span><span class="n">f1</span>
</pre></div>
</div>
<p>Then, ensure you have those keys loaded in the ssl-privatekey and ssl-certificate settings in the config file. Finally, to add this certificate to your NickServ account, type:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">msg</span> <span class="n">NickServ</span> <span class="n">cert</span> <span class="n">add</span> <span class="o"><</span><span class="n">fingerprint</span> <span class="n">string</span> <span class="kn">from</span><span class="w"> </span><span class="nn">above</span> <span class="n">goes</span> <span class="n">here</span><span class="o">></span>
</pre></div>
</div>
<ul class="simple">
<li><p><strong>SCRAM-SHA-256</strong>: To use this method, set sasl-mechanism to 3.</p></li>
<li><p><strong>SCRAM-SHA-512</strong>: To use this method, set sasl-mechanism to 4.</p></li>
</ul>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
</div>
<div class="footer-wrapper">
<div class="footer">
<div class="left">
<div role="navigation" aria-label="related navigaton">
<a href="setup.html" title="Setting Up Eggdrop"
>previous</a> |
<a href="tlssetup.html" title="Enabling TLS Security on Eggdrop"
>next</a>
</div>
<div role="note" aria-label="source link">
</div>
</div>
<div class="right">
<div class="footer" role="contentinfo">
© Copyright 2025, Eggheads.
Last updated on Aug 15, 2025.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</div>
<div class="clearer"></div>
</div>
</div>
</body>
</html>
|