<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Denora IRC Stats v1.5</title>
+<link rel="icon" href="html_docs/images/favicon.ico" type="image/x-icon">
+<title>Denora IRC Stats v1.5 Documentation</title>
</head>
<frameset cols="140,*" frameborder="no" border="0" framespacing="0">
--- /dev/null
+CREDITS<br />
+----------<br />
+<br />
+ Denora is based on the original code of Anope 1.7.6 by Anope Team,
+ and based on the original code of Thales 1.0 by Lucas Nussbaum.<br />
+<br />
+ Anope credits:<br />
+<br />
+ * Adam Kramer <ribosome@anope.org><br />
+ * Alvaro Toledo <atoledo@keldon.org><br />
+ * Bj?rn Stiddien <keeper@anope.org><br />
+ * Chris Hogben <heinz@anope.org><br />
+ * Daniel Engel <dane@zero.org><br />
+ * David <dv@diboo.net><br />
+ * David Narayan <jester@phrixus.net><br />
+ * David Robson <rob@anope.org><br />
+ * Daniele Nicolucci <jollino@sogno.net><br />
+ * Florian Schulze <certus@anope.org><br />
+ * Gabriel Acevedo H. <drstein@anope.org><br />
+ * JH <jh@irc-chat.net><br />
+ * Joris Vink <joris@anope.org><br />
+ * Lucas Nussbaum <lucas@lucas-nussbaum.net><br />
+ * Pieter Bootsma <geniusdex@anope.org><br />
+ * Thomas Juberg Stens?s <ShadowMaster@Shadow-Realm.org><br />
+ * Trystan S. Lee <trystan@nomadirc.net><br />
+ * openglx <openglx@brasnerd.com.br><br />
+<br />
+ Thales credits:<br />
+<br />
+ * Lucas Nussbaum <lucas@lucas-nussbaum.net><br />
+ * Jollino <jollino@sogno.net><br />
+ * Partizanu <partizanu@netchat.ro><br />
+<br />
+
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
-<title>Untitled Document</title>
+<link rel="icon" href="html_docs/images/favicon.ico" type="image/x-icon">
+ <link rel="stylesheet" type="text/css" href="sdmenu/sdmenu.css" />
+
+<title>Denora IRC Stats v1.5 Documentation</title>
</head>
<body>
this variable that we will create the cron event handler. Here is what
the base DenoraInit should look like at this point:<br />
<br />
-<br />
- int DenoraInit(int argc, char **argv)<br />
- {<br />
- CronEvent *cevt = NULL;<br />
- int status;<br />
-<br />
- moduleAddAuthor(AUTHOR);<br />
- moduleAddVersion(VERSION);<br />
- return MOD_CONT;<br />
- }<br />
-<br />
+<pre>
+ int DenoraInit(int argc, char **argv)
+ {
+ CronEvent *cevt = NULL;
+ int status;
+
+ moduleAddAuthor(AUTHOR);
+ moduleAddVersion(VERSION);
+ return MOD_CONT;
+ }
+</pre>
C) Pass "createCronEvent" the name of the event. In this case we are
going to hook time event of midnight, "CRON_MIDNIGHT".<br />
-<br />
- cevt = createCronEventHook(CRON_MIDNIGHT, midnight_check);<br />
-<br />
+<pre>
+ cevt = createCronEventHook(CRON_MIDNIGHT, midnight_check);
+</pre>
D) The Handler is not ready for use yet; now you must add it to the hash
with "moduleAddCronEvent". You will want to pass to this function the
return of "createCronEvent"<br />
- _____ __<br />
-| _ \ __ __/ \<br />
-| | \ | / \__ / \___<br />
-| | | | ___/ _ __ \_/_ _ __ __\_<br />
-| | | / _ \| '_ \/ _ \| '__|/ _ |<br />
-| |_/ | __/| | | |_| | | ' (_| |<br />
-|_____/ \___||_| |_\___/|_| \__,_|_<br />
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
+<link rel="icon" href="html_docs/images/favicon.ico" type="image/x-icon">
+<link rel="stylesheet" type="text/css" href="sdmenu/sdmenu.css" />
+<title>Denora IRC Stats v1.5 Documentation</title>
+</head>
+
+<body>
+<center>
+<img src=images/newDenora.png><br />
<br />
Statistics for IRC Networks<br />
+ http://www.denorastats.org/<br />
+<br />
+</center>
<br />
Denora is an open source, free software. However the developers have put a lot
of time, money and effort into making the program what it is today.<br />
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
+<link rel="icon" href="html_docs/images/favicon.ico" type="image/x-icon">
+<link rel="stylesheet" type="text/css" href="sdmenu/sdmenu.css" />
+<title>Denora IRC Stats v1.5 Documentation</title>
+</head>
+
+<body>
================================<br />
DENORA INSTALLATION INSTRUCTIONS<br />
================================<br />
A new trend in ircd configuration is popping all over the place, good
examples are the latest Hybrid, Unreal and Bahamut, which use a more
"readable" form of configuration. For those, use something like:<br />
-<br />
- link stats.localhost.net<br />
- {<br />
- username *;<br />
- hostname localhost;<br />
- bind-ip *;<br />
- port 6667;<br />
- hub *;<br />
- password-connect "mypass";<br />
- password-receive "mypass";<br />
- class servers;<br />
- };<br />
-<br />
+<pre>
+ link stats.localhost.net
+ {
+ username *;
+ hostname localhost;
+ bind-ip *;
+ port 6667;
+ hub *;
+ password-connect "mypass";
+ password-receive "mypass";
+ class servers;
+ };
+</pre>
Note that this block-style configuration files differ heavily, depending
on the IRCd. Read your IRCd documentation for more details on the exact
configuration used by your IRCd.<br />
<div>
<span>Documentation</span>
+ <a href="main.html" target="mainFrame">Read Me</a>
<a href="commands.html" target="mainFrame">Commands</a>
+ <a href="credits.html" target="mainFrame">Credits</a>
<a href="gnulicense.html" target="mainFrame">License</a>
<a href="donation.html" target="mainFrame">Donations</a>
<a href="faq.html" target="mainFrame">FAQ</a>
<body>
<br />
<br />
- _____ __
-| _ \ __ __/ \
-| | \ | / \__ / \___
-| | | | ___/ _ __ \_/_ _ __ __\_
-| | | / _ \| '_ \/ _ \| '__|/ _ |
-| |_/ | __/| | | |_| | | ' (_| |
-|_____/ \___||_| |_\___/|_| \__,_|_
+
+<center>
+<img src=images/newDenora.png><br />
<br />
Statistics for IRC Networks<br />
http://www.denorastats.org/<br />
<br />
+</center>
-----------------<br />
TABLE OF CONTENTS<br />
-----------------<br /><br />
----------<br />
<br />
Denora is based on the original code of Anope 1.7.6 by Anope Team,
- and based on the original code of Thales 1.0 by Lucas Nussbaum.
- See docs/Credits for full list of credits.<br />
+ and based on the original code of Thales 1.0 by Lucas Nussbaum.<br>
+ See Credits for full list of credits.<br />
<br />
Denora credits:<br />
<br />
<br />
Denora currently works with the following IRCds:<br />
<br />
- * Bahamut 1.4 and 1.8<br />
- * Charybdis 1.0 - 3.x<br />
- * Inspircd 1.1.x - 2.0.x<br />
- * IRCU 2.10.11 - 2.10.12<br />
- * ircd-rizon 3.x.x<br />
- * Nefarious IRCu 1.3.x - 2.0.x<br />
- * Ratbox 2.0.6<br />
- * ScaryNet IRCu 2.10.11 - 2.10.12<br />
- * Unreal 3.2 beta19 or later<br />
+<table width=300 border=1>
+ <tr>
+ <td>IRCd</td>
+ <td>Version</td>
+ <tr>
+ <td>Bahamut</td>
+ <td>1.4 and 1.8</td>
+ </tr>
+ <tr>
+ <td>Charybdis</td>
+ <td>1.1x - 3.x</td>
+ </tr>
+ <tr>
+ <td>Inspircd</td>
+ <td>1.1x - 1.2.x and 2.x</td>
+ </tr>
+ <tr>
+ <td>ircu</td>
+ <td>2.10.11 - 2.10.12</td>
+ </tr>
+ <tr>
+ <td>Nefarious IRCu</td>
+ <td>IRCu 1.3.x - 2.0.x</td>
+ </tr>
+ <tr>
+ <td>Ratbox</td>
+ <td>3.x</td>
+ </tr>
+ <tr>
+ <td>ScaryNet IRCu</td>
+ <td>2.10.11 - 2.10.12</td>
+ </tr>
+ <tr>
+ <td>UnrealIRCd</td>
+ <td>3.2 beta19 or later</td>
+ </tr>
+
+</table>
+<br />
<br />
Denora could also work with some of the deamons derivated by the ones
listed above.<br />
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
+<link rel="icon" href="html_docs/images/favicon.ico" type="image/x-icon">
+<link rel="stylesheet" type="text/css" href="sdmenu/sdmenu.css" />
+<title>Denora IRC Stats v1.5 Documentation</title>
+</head>
+
+<body>
Denora Modules: Configuration Files<br />
--- <br />
-------------<br />
<br />
1) Introduction<br />
<br />
The flat config files use a struct called "Directive" to load their settings.<br />
<br />
- Directive confvalues[][1] = {<br />
- {{"sqldb", {{PARAM_STRING, 0, &sql_db}}}},<br />
- };<br />
+<pre>
+ Directive confvalues[][1] = {
+ {{"sqldb", {{PARAM_STRING, 0, &sql_db}}}},
+ };
+</pre>
<br />
first parameter must be the variable from the config file that will be looked for. Next is the
data type (see above), Next is if the variable is reloadable, should Denora rehash should this
background: #eee;
display: block;
border-bottom: 1px solid #ddd;
- color: #066;
+ color: #000022;
}
div.sdmenu div a.current {
background : #ccc;
}
div.sdmenu div a:hover {
- background : #066 url(linkarrow.gif) no-repeat right center;
+ background : #000066 url(linkarrow.gif) no-repeat right center;
color: #fff;
text-decoration: none;
-}
\ No newline at end of file
+}
+
+pre {border: solid 1px #E89643;
+ font-size: 1.3 em;
+ color: #E62E00;
+ font-weight:bold;
+ margin: 10px;
+ padding:10px;
+ background: #D1D1E0}
\ No newline at end of file
+<link rel="stylesheet" type="text/css" href="sdmenu/sdmenu.css" />
+
+
Denora XMLRPC Module Coding<br />
-- <br />
---------------------<br />
2) Basics<br />
<br />
A) All functions must be formatted like this:<br />
-<br />
+<pre>
int functioname(deno_socket_t xmlsocket, int ac, char **av);<br />
-<br />
+</pre>
B) In DenoraInit you must declare XMLRPC Method in some fashion; it is into
this variable that we will create the method handler. Here is what
the base DenoraInit should look like at this point:<br />
<br />
- int DenoraInit(int argc, char **argv)<br />
- {<br />
- XMLRPCCmd *xml = NULL;<br />
- int status;<br />
-<br />
- moduleAddAuthor(AUTHOR);<br />
- moduleAddVersion(VERSION);<br />
- return MOD_CONT;<br />
- }<br />
+<pre>
+ int DenoraInit(int argc, char **argv)
+ {
+ XMLRPCCmd *xml = NULL;
+ int status;
+
+ moduleAddAuthor(AUTHOR);
+ moduleAddVersion(VERSION);
+ return MOD_CONT;
+ }
+</pre>
<br />
C) Pass "createXMLCommand" the name of the method. <br />
-<br />
+<pre>
xml = createXMLCommand("denora.getstat", xmlrpc_getstat);<br />
-<br />
+</pre>
D) The Handler is not ready for use yet; now you must add it to the hash
with "moduleAddXMLRPCcmd". You will want to pass to this function the
return of "createXMLCommand"<br />
-<br />
+<pre>
status = moduleAddXMLRPCcmd(xml);<br />
-<br />
+</pre>
It will return the same module error codes as adding a regular message,
which you can use to confirm it was added correctly.<br />
<br />
E) With that setup in your function you will be passed a socket that will
be the user's socket that asked for the info, an array count and an array<br />
-<br />
- int xmlrpc_getstat(deno_socket_t xmlsocket, int ac, char **av)<br />
- {<br />
- char buf[BUFSIZE];<br />
- *buf = '\0';<br />
-<br />
- if (!stricmp(av[0], "users")) {<br />
- ircsnprintf(buf, BUFSIZE, "<i4>%ld</i4>", (long int) stats->users);<br />
- } else if (!stricmp(av[0], "chans")) {<br />
- ircsnprintf(buf, BUFSIZE, "<i4>%ld</i4>", (long int) stats->chans);<br />
+<pre>
+ int xmlrpc_getstat(deno_socket_t xmlsocket, int ac, char **av)
+ {
+ char buf[BUFSIZE];
+ *buf = '\0';
+
+ if (!stricmp(av[0], "users")) {
+ ircsnprintf(buf, BUFSIZE, "<i4>%ld</i4>", (long int) stats->users);
+ } else if (!stricmp(av[0], "chans")) {
+ ircsnprintf(buf, BUFSIZE, "<i4>%ld</i4>", (long int) stats->chans);
} else {<br />
- ircsnprintf(buf, BUFSIZE, "<i4>%ld</i4>", (long int) stats->users);<br />
- }<br />
-<br />
- xmlrpc_send(xmlsocket, 1, buf);<br />
-<br />
+ ircsnprintf(buf, BUFSIZE, "<i4>%ld</i4>", (long int) stats->users);
+ }
+
+ xmlrpc_send(xmlsocket, 1, buf);
+
return MOD_CONT;
- }<br />
-<br />
+ }
+</pre>
note that for a valid XMLRPC method it must have an argument, this is part of the XMLRPC
standard. Place your data into a buffer and send it to back to the requestor.<br />
<br />
*/
#include "denora.h"
-#include "ratbox.h"
+#include "ratbox3.h"
int DenoraInit(int argc, char **argv)
{
void ratbox_cmd_capab(void)
{
send_cmd(NULL,
- "CAPAB :QS EX CHW IE GLN KNOCK ZIP TB ENCAP SERVICES RSFNC SAVE SAVETS_100");
+ "CAPAB :QS EX CHW IE GLN KNOCK ZIP TB ENCAP SERVICES");
}
/* PASS */