This Ain't PTlink Software
Page updated 01 March 2011

Our pseudo-wiki is under construction, for now only important information.

First, what the ...?

TAPS is a fork from PTlink Software by two members of its former development team. ^Stinger^ and openglx are available for comments at #taps, please feel free to reach them.

How to find us

We're always at #taps at irc.ircworld.nl, please join our conversations. English is prefered, but Portuguese is nice too.

  /server irc.ircworld.nl
  /join #taps

How to download latest code


TAPS 6.21.1 was released for production in 01 March 2011, being a urgent fix for problem find at Issue 62.


CHANGES are listed below:

    TAPS6.21.1 (01 Mar 2011)
    What has been fixed ?
    [Issue 0000062] Opers aren't being able to issue Kills
    TAPS6.21.0 (31 Jan 2011)
    What is new ?
    [issue 0000006] VIP features for users
    [Issue 0000046] Create module to maintain vlink (virtual servers) database
    [Issue 0000054] Antispam system for channels and privmsgs
    What has been fixed ?
    [Issue 0000047] IRCd crashes on x86_64 environment

Enjoy, and report us ANY issue!

Further versions

Development is active. More information at taps-ircd gitweb.

TAPS Services

PTlink Services 2 reached end of life several years ago, dropped for PTlink Services 3. PTlink Services 3.10.0 was it final release before PTlink closure. TAPS is in active process to release a new version. Check out our git repository for taps-services, branch 3.11.0.

taps-services gitweb

Expected release is in later January 2011 (early February, now). For now, snapshot for latest merges is at:

taps-services branch 3.11.0 snapshot

Bug reports and feature requests

All interaction is made under our bug reporting handler at TAPS bugs. Please, create an account and read all features request.

Bug reports are welcome, and major fixes are priorized.

Why should I use TAPS?

PTlink Software became famous for its feature-full set of IRC daemons. IRCd, based on rock-solid Hybrid6 code, a modular and SQL-based Services from scratch, plus other tools for easing networking administration.

Our set of services is currently one of most technologic advanced daemons for DALnet-lik services, including NickServ, ChanServ, MemoServ, OperServ and BotServ. At 3.11.0 a new HostServ is expected to debut. Everything is modular, so you can choose to have some or all modules at any time. Dynamic loading works in most platforms.

Everything is backed by it SQL support. There are not database files: you can insert or modify entries directly at database server and have services acting a new way immediatily.

Developers' paradise

Modular system using event-based interactions, it's just straight forward to create a new functionality. Git access needs user, ask openglx for more information.


We eat our own dog food, ya' know. Alas, our lack of documentation is shameful. :) Secondary projects to create documentation are undergoing, anyhow.

Installing IRCd

Get source code (links are above), uncompress and compile:

  ./configure --help      <<<--- See if there are any interesting options to you
  make install

Default target is $HOME/ircd. Binary is at bin/ircd. Configuration files are at etc/.

Configuration file Description
etc/ircd.conf Daemon configuration file, mostly Hybrid6 configuration
etc/main.dconf Server-wide configuration, such as flood limits and so
etc/network.dconf Network-wide configuration, such as Services server

Installing Services3

Get source code (links are above), uncompress and compile:

  ./configure --help      <<<--- See if there are any interesting options to you
  make install

Default target is $HOME/ircsvs. Binary is at bin/ircsvs. Configuration files are at etc/. Those files have default modules to load at start, and database configuration.

Before running ircsvs, take a look on configuration it holds at SQL entries. To do so, check

  ~/ircsvs/bin/ircsvs conf list

You also may export those entries to a shell script and update them more easily.

  cd ~/ircsvs/bin/
  ./ircsvs conf export > my_config.sh

Now edit my_config.sh, and run it to have configuration set up.

IMPORTANT: pay attenttion to nickserv.Root setting: it must be set only when first configuring your ircsvs. After you configure it, add yourself to Root group at /NickServ GROUP and remove previous conf.

I'd recommend add yourself also to Admin and Oper groups, as our ROLE/GROUP system isn't recursive: being at *Root** group doesn't grants you access to features restricted to an Oper, for example.

Enabling vlink support

TAPS6.21.0 and TAPS Svs3.11.0 introduces virtual link support, mimicking an old BrasNET controversial feature. Virtual servers are something RFC1459 (to know, see setion 4.1.3) introduced "by mistake". As clients send servername on which they are trying to connect, it was possible to track where user tried to connect. Think of Named Hosts on an HTTP/1.1 specification.

Feature is considered controversial due it power-hungry background: many person went into buying domainnames and paying to have a virtual link connect to the network, leading to an economic relation between virtual link owners and network owner. That's not actual reason why BrasNET went under large DDoS attacks until its shutdown. But, I for one, really consider that it has much to do with it.

Anyhow, as BrasNET used PTlink Software for their systems, and many brazilian networks also made (private) PTlink project forks, VLinks are a top request for several years. In 2011, we finally decided to give it a go. Now, Svs3.11.0 can manage virtual links and virtual opers.

Load vlinks and os_vlink modules. Append them at etc/ircsvs.modules listing to automaticly load them at services startup.

To configure a virtual server, you first need to create two groups at Nickserv GROUP.

  /NickServ GROUP CREATE group[automodes] master_group description

Something like:

  /NS GROUP CREATE VLinkAdmins Admin My nice admin group
  /NS GROUP CREATE VLinkOpers VLinkAdmins Opers, can be managed by those at VLinkAdmins too

Now, create VLink:

  /OS VLINK ADD irc.my.vlink.server.name VLinkAdmin VLinkOper Description to new server

Now, when an user from VLinkAdmins or VLinkOpers identify their nicknames after connecting to irc.my.vlink.server.name, they will receive special privileges. Those privileges are limited to their own vlink.

To get some statistics, see


Have fun, just don't start DoS'ing others. :)

ROLE system

Major difference from PTlink Services 2 to 3 is ROLE system. Previously, all channel management was made using LEVELS and ACCESS. You gave an user ACCESS to channel, which was a numerical value (ranging from -9999 to 9999). According to their number, it matched a LEVEL.

Each permission had a numerical attribute, configured by LEVEL. If you had ACCESS equal or higher than that LEVEL required, you were granted.

ROLE much more granular, fine grained. But, being different from IRCServices-based system (dated 1996), many are not used to it.

A ROLE is an hierarchical system, which each individual channel chooses it organization. Each role has a master (can be null), a list of action and a list of permissions.

#taps has three roles. admin has no master role, so only channel founder can change its members. Anyone at admin will have aadmin, aop and msg actions performed once they join the channel, and will be able to do all functions listed after the : separator.

operator is managed by *admin**, and has one less action (will not aadm), and much less permissions.

voice is managed by operator, will only have avoice and msg actions, and can only voice themselves.

  -ChanServ- *** Roles on #taps
  -ChanServ-  admin [] aadm,aop,msg:set,kick,opdeop,hopdehop,voice,list,view,invite,unban,clear,akick
  -ChanServ-  operator [admin] aop,msg:kick,opdeop,voice,list,invite,unban
  -ChanServ-  voice [operator] avoice,msg:voice
  -ChanServ- *** End of role list

Actions available:

Action Meaning
aadm auto admin on join (+a)
aop auto op on join (+o)
avoice auto voice on join (+v)
notice send notice to the channel on join
msg send message to the channel on join

Permissions available:

Permission Meaning
set can use SET
kick can use KICK
opdeop can use OP/DEOP
voice can use VOICE/DEVOICE
invite can use the INVITE command
unban can use the UNBAN command
clear can use the CLEAR command
view can use the ROLE VIEW comzand
list can use the ROLE LIST command
akick can use the AKICK command

Currently, ony channel founder can change actions and permissions for roles. More information is available at /CS HELP ROLE.

VIP Users

In 2006, BrasNET made a new service called VIP. Many users paid to get some privileges like higher limit for memos and channel, special vhost, spy mode, etc.

Since TAPS started we've received many requests from brazilians to provide VIP features. Now, we have it. VIP features was merged into our source in January 2011.

In order to use, you must follow the below steps:

1) Load module using /OperServ MODULE LOAD os_vip

Note: Append os_vip on ircsvs.modules to load automatically

2) Create VIP management group, just type:

/NickServ GROUP CREATE VipAdmin Admin description

Note: VipAdmin is a default value, you can change it using ircsvs set conf operserv.VipRole new_value

3) Add users to the VipAdmin group, type:

/NickServ GROUP ADD nick VipAdmin

Now, all users that belong VipAdmin group, can manage VIP Users.

/OperServ VIP ADD nick +time Note: 0d as time value means VIP won't expire

/OperServ DEL nick

/OperServ VIP LIST

These are the main commands. To further informations, use /OperServ HELP VIP