Giter VIP home page Giter VIP logo

inspircd-docs's Introduction

About

InspIRCd is a modular C++ Internet Relay Chat (IRC) server for UNIX-like and Windows systems.

This repository contains the sources for the documentation available at docs.inspircd.org.

Development

The documentation is built with MkDocs. You can install this along with all of the other dependencies using pip using the following command:

pip3 install -r requirements.txt .

Depending on your system you may need to run this as root for a system-wide install.

Once the dependencies are installed you can run the site using the following command:

mkdocs serve

Documentation Structure

Content

Most of it is in docs/3/, which is the documentation of the current major release. The core documentation directly in it, and module documentation in a subfolder. Each module is documented by a YAML file, that is formatted by the MkDocs extension using mkdocs_inspircd/templates/module.md.j2. The data is also interpreted by the documentation to generate tables in the core documentation (eg. to provide a list of all commands of all modules).

docs/4/ contains preparatory work for the next major release.

MkDocs extension

mkdocs_inspircd/ contains an extension for MkDocs, that does two things:

Rendering module documentation

All module pages are very similar in structure, so we decided to generate them from data files instead of repeating the markdown code. This avoids inconsistencies, and easier changes in the structure; and to access module information programmatically.

To do this, the MkDocs extension implements the on_files hook, so MkDocs detects .yml files as source files (as if they were .md).

It also implements the on_page_read_source hook to convert the YAML content to Markdown on the fly, because MkDocs tries to parse it. This is done simply by rendering mkdocs_inspircd/templates/module.md.j2 with the YAML content as context.

Jinja templating for Markdown

Some pages, like docs/3/channel-modes.md, use dynamic data to populate tables (eg. the table of all plugins' channel modes) without duplicating data from plugins. This is done by the on_page_markdown hook, which is executed just before MkDocs parses renders Markdown. This hook interprets Markdown documents as if they were Jinja templates, and passes them module data in the context; which produces the final Markdown document.

License

This documentation is licensed under the same license as InspIRCd (GPLv2).

inspircd-docs's People

Contributors

adnissen avatar alarixnia avatar awfulcooking avatar cbarcenas avatar ctria avatar dependabot[bot] avatar duckspike avatar genius3000 avatar itsonlybinary avatar jesopo avatar linuxdaemon avatar mkroman avatar progval avatar r734 avatar rgraff avatar robby- avatar sadiecat avatar satmd avatar scooter-it avatar whissi avatar zordtk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

inspircd-docs's Issues

Complete and fully tested install instructions for major releases.

Description
Complete and fully tested install instructions for major releases.

Why this would be useful
This would reduce frustration and increase adoption.

My people will run tests to confirm instructions work properly.
Please always include the solution when closing a bug report.

more setup tutorials for major cloud computing services

Description
with AWS, Google Cloud, and Microsoft Azure. People can now run serves in the cloud. yet there are no tutorials on setting up inspircd on any of these major platforms

Why this would be useful
The number of people moving to these platforms is massive and proper tutorials on how to use inspircd on these platforms would increase inspircd's usage.

Solution
step by step turorials for each of these platforms AWS, Google Cloud, and Microsoft Azure should be made.

Missing Information

It seems that the migration away from wiki has lost a lot of information, an example is the +/-P channel mode. It's not documented under channel modes. Another example is the configuration for the filter module is missing the include directive.

Document the existence of the pkgsrc package

The InspIRCd packages in pkgsrc are developed by @Niacat who is a previous contributor that monitors InspIRCd development closely and updates it immediately after release. I think this means it meets the requirement to be mentioned as a blessed way to install InspIRCd especially considering that pkgsrc is portable to many platforms.

@Niacat has expressed an interest in writing this up so this is a tracking issue to monitor the work on that.

Create a Beginner's Guide to Writing Custom Modules

There is great interest in starting to write your own modules for IRCD, but there is no practical knowledge, only a little knowledge of the C++ programming language. It would be useful to have a more detailed guide on writing modules from scratch with good examples for each value or instructional videos.

Update SILENCE docs

There are some flags missing.

Also, it would be great to add an example of how to add/remove a SILENCE but not all flags or how to add an exception.

user modes for oper an user

helo anyone can help..
already look at inspird web site and other website.. but i cant found details bout user mode for oper/ircop and for normal user..

For example mode for ircop /mode +q or etc.. where i can get info / knowlegde bout that all.. coz at inspircd website not explain details.. just look lazy people whom write very simple..

Document the InspIRCd server-to-server protocol

We currently do not have any documentation for the InspIRCd server to server protocol. I am working on this but it is taking a while so this is a tracking issue to monitor the progress on it.

Add an overview of changes in v4

The current v4 changelog isn't very useful for people who are upgrading as it doesn't give people a summary of all of the changes in the release. We should add a new docs page with a more higher level overview of the changes.

I've started work on this over here but it would be good to have some help with suggestions for what should be in it as its a big task.

Content error: Configuration Documentation

Description
There is a content error in the online configuration documentation.

Steps to reproduce the issue:

  1. View configuration documentation.
  2. Navigate to ""
  3. Notice the error

Describe the results you received:
The section for badnick contains the description of the previous entry.

Describe the results you expected:
The description of the appropriate section appearing.

Additional information you deem important (e.g. issue happens only occasionally):

Output of ./bin/inspircd --version:

Prepare docs for generating the help config from them.

Some changes we need to make before this change:

  • Add an oper_only bool field to the commands section of the YAML.
  • Merge example_commands into the commands section under each module.
  • Convert the core command data from Markdown to YAML.

Either <connect:allow> or <connect:deny> is required or connect class is not suitable

If you create a config like shown in the following example,

Defines a TLS (SSL) only connect class and then a general connect class to inherit from:
```xml
<connect name="Secure"
parent="Main"
port="6697">
<connect name="Main"
allow="*"
commandrate="1000"
fakelag="on"
globalmax="3"
hardsendq="1M"
limit="5000"
localmax="3"
maxchans="30"
maxconnwarn="no"
pingfreq="120"
recvq="8K"
resolvehostnames="yes"
softsendq="8192"
threshold="10"
timeout="10"
uniqueusername="no">
```
you will see the following message in debug mode when a client connects on port 6697:

Tue May 23 2023 03:20:42 CONNECTCLASS: The Secure connect class is not suitable as neither <connect:allow> nor <connect:deny> are set
Tue May 23 2023 03:20:42 CONNECTCLASS: Checking the Main connect class ...
Tue May 23 2023 03:20:42 CONNECTCLASS: The Main connect class is suitable for 007AAAAAF ([email protected])

In other words: The example doesn't work. Looks like either <connect:allow> or <connect:deny> is always required.

Tested with version 3.16.0 [Vendor].

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.