Here are the exact steps I took guys. Not sure if all of them are required, but I would see no reason why they wouldn't be, so follow carefully. For reference:
ApexDC = Default Apex Client
UoNApexDC = Custom version of the client im doing for my hub / uni
PWDC = Peerweb
Obviously only use the ones you want, in here it shows all of them, as until ive finished my custom version of apex, our users use different types.
# cdcconf.cpp
char *cl_types[]={"", "plusplus","dcgui","odc","dc","dcpro", "strongdc", "idc", "zdc"};
to
char *cl_types[]={"", "plusplus","dcgui","odc","dc","dcpro", "strongdc", "idc", "zdc", "apexdc", "uonapexdc", "pwdc"};
# cdctag.cpp
if(!mTagRE.Compile("((<iDC|zDC\\+\\+\\[|o)([\\d\\.]+)?(>|\\])?)?<(\\+\\+|DCGUI|oDC|DC|DC\\:PRO|TK|StrgDC\\+\\+) ?V\\:([^,]+),([^>]*)>"))
to
if(!mTagRE.Compile("((<iDC|zDC\\+\\+\\[|o)([\\d\\.]+)?(>|\\])?)?<(\\+\\+|DCGUI|oDC|PWDC\\+\\+|UoNApexDC\\+\\+|ApexDC\\+\\+|DC|DC\\:PRO|TK|StrgDC\\+\\+) ?V\\:([^,]+),([^>]*)>"))
// determine client's type
mParser.mTagRE.Extract(eTP_TYPE,desc,str);
if( str == "++" ) mClientType = eCT_PLUSPLUS;
else if (str == "DCGUI") mClientType = eCT_DCGUI;
else if (str == "oDC") mClientType = eCT_ODC;
else if (str == "DC") mClientType = eCT_DC;
else if (str == "DC:PRO") mClientType = eCT_DCPRO;
else if (str == "StrgDC++") mClientType = eCT_STRONGDC;
else if (str.size() ) mClientType = eCT_UNKNOWN;
if (mParser.mTagRE.PartFound(eTP_PRE_PREFIX))
{
to
// determine client's type
mParser.mTagRE.Extract(eTP_TYPE,desc,str);
if( str == "++" ) mClientType = eCT_PLUSPLUS;
else if (str == "DCGUI") mClientType = eCT_DCGUI;
else if (str == "oDC") mClientType = eCT_ODC;
else if (str == "DC") mClientType = eCT_DC;
else if (str == "DC:PRO") mClientType = eCT_DCPRO;
else if (str == "StrgDC++") mClientType = eCT_STRONGDC;
else if (str == "ApexDC++") mClientType = eCT_APEXDC;
else if (str == "UoNApexDC++") mClientType = eCT_UONAPEXDC;
else if (str == "PWDC++") mClientType = eCT_PWDC;
else if (str.size() ) mClientType = eCT_UNKNOWN;
if (mParser.mTagRE.PartFound(eTP_PRE_PREFIX))
{
string Client;
switch(mClientType)
{
case cDCTag::eCT_PLUSPLUS: Client = "DC++"; break;
case cDCTag::eCT_DCGUI: Client = "DCGUI"; break;
case cDCTag::eCT_ODC: Client = "oDC"; break;
case cDCTag::eCT_DC: Client = "DC"; break;
case cDCTag::eCT_DCPRO: Client = "DCPRO"; break;
case cDCTag::eCT_STRONGDC: Client = "StrongDC++"; break;
case cDCTag::eCT_IDC: Client = "iDC"; break;
case cDCTag::eCT_ZDC: Client = "zDC++"; break;
default: Client = "Unknown"; break;
}
to
string Client;
switch(mClientType)
{
case cDCTag::eCT_PLUSPLUS: Client = "DC++"; break;
case cDCTag::eCT_DCGUI: Client = "DCGUI"; break;
case cDCTag::eCT_ODC: Client = "oDC"; break;
case cDCTag::eCT_DC: Client = "DC"; break;
case cDCTag::eCT_DCPRO: Client = "DCPRO"; break;
case cDCTag::eCT_STRONGDC: Client = "StrongDC++"; break;
case cDCTag::eCT_IDC: Client = "iDC"; break;
case cDCTag::eCT_ZDC: Client = "zDC++"; break;
case cDCTag::eCT_APEXDC: Client = "ApexDC++"; break;
case cDCTag::eCT_UONAPEXDC: Client = "UoNApexDC++"; break;
case cDCTag::eCT_PWDC: Client = "PWDC++"; break;
default: Client = "Unknown"; break;
}
# cdctag.h
typedef enum{ eCT_NOTAG, eCT_PLUSPLUS, eCT_DCGUI, eCT_ODC, eCT_DC, eCT_DCPRO, eCT_STRONGDC, eCT_IDC, eCT_ZDC, eCT_UNKNOWN } tClientType;
to
typedef enum{ eCT_NOTAG, eCT_PLUSPLUS, eCT_DCGUI, eCT_ODC, eCT_DC, eCT_DCPRO, eCT_STRONGDC, eCT_IDC, eCT_ZDC, eCT_APEXDC, eCT_UONAPEXDC, eCT_PWDC, eCT_UNKNOWN } tClientType;
Now would also be a good time to change Verlihubs topic length setting to 255 from the annoying 80. In addition I recommend you update all the strings which are returned to users if they dont meet certain connection critirea such as "Turn on your tags", is not very helpful for joe blogs - "You are using a DC++ client which is not supported on this hub, please use either: xxx, xxx. These can be downloaded at: www.xxx.com."
Once youve finished the edits, simply ./configure, make, and make install. You shouldnt have to redo any settings, and nothing will be lost.
Once in your hub, or through phpmyadmin or similar, use:
!set tag_allow_none 0
!reload
This will disallow users who have tags the hub doesnt recognise from connecting. In addition you will also find that Apex / Peerweb users are now subject to the same slot req' as everyone else.
:)