centralnicgroup-opensource / rtldev-middleware-whmcs

CentralNic's WHMCS Software Bundle
https://centralnicreseller.com
Other
35 stars 15 forks source link

IBS: 504 Gateway Timeout, issues with .it & RegisterDomain #254

Closed Kian987 closed 1 year ago

Kian987 commented 1 year ago

Hi,

sadly the current state of IBS isn't good. It is not usable. Even the most basic features are no longer reliable. Keep in mind what I am describing is occurring on multiple systems of different providers that are using a wide variety of WHMCS versions.

504 Gateway Timeout still occurring

First thing first, what I described here last week is still happening. The same exact module on some systems still causes 504 Gateway Timeout. On some others it works. I have no idea why getconfigarray / Account/Balance/Get requests keep flooding IBS API server. The only option these providers have is to keep using IBS v1 module.

Wrong validations, values... wrong everything

Second. It seems that today we have lost the ability to register some .it domains but I suspect the issue also applies to other extensions since the principle is the same.

I also think that the issue is not directly caused by the module. IBS API probably plays a role here. Maybe IBS changed something on their side but such changes are unknown to WHMCS module.

Take a look at the following screenshot (left side request, right side response).

ibs_bug

As you can see we have errors everywhere that don't make any sense:

Update contacts still not working

Last week when I opened my first bug report all we wanted was the ability to restore a feature that stopped working without notice. I am talking about updating domain contacts (tech, registrant, billing).

Now not only this feature is still not working but providers are experiencing Gateway Timeouts, inexplicable errors and validations that make no sense.

KaiSchwarz-cnic commented 1 year ago

@Kian987 thanks for the follow-up.

Whenever it comes to Gateway Timeout - it is not an issue of the specific feature (update contacts), it is imho the result of earlier getConfigArray flooding. I am also wondering why the issue we patched in getConfigArray isn't solving it for all installations. Do you mind sharing the URL of the "Domain Registrations" Overview (feel free to hide the hostname) of an affected system for reference? In the meanwhile, I am checking alternatives ...

Again, thanks for reporting all this. This will receive highest priority on our end.

KaiSchwarz-cnic commented 1 year ago

504 Gateway Timeout -> we moved the validation of API connectivity now out of getConfigArray to config_validate. A undocumented way we got forwarded by WHMCS customer support.

So, any issue related to 504 Gateway Timeout I consider as patched from Code Perspective. You're receiving that error as result of making to many requests for a certain time interval. If this still occurs, please open a support ticket and include the affected account name so that technicians can check if it got blacklisted because of this.

for completeness: v4.0.5 is patching that Gateway error.

KaiSchwarz-cnic commented 1 year ago

The issue with .it registrations, I opened an internal task for the IBS Backend Devs to have an eye on it. I'll keep you in the loop.

Kian987 commented 1 year ago

Thanks for reply.

Do you mind sharing the URL of the "Domain Registrations" Overview (feel free to hide the hostname) of an affected system for reference? In the meanwhile, I am checking alternatives ...

What do you mean? Just the query string? Here you go https://{SYSTEM_URL}/{WHMCS_ADMIN_DIR}/index.php/{WHMCS_ADMIN_DIR}/domains. Before you ask yes, WHMCS admin directory (default is /admin) appears twice but that's how WHMCS works.

As for the rest I am going to try the latest version.


Suggestion

In the meantime let me share with you a hint for IBS. Apparently IBS never wanted to fully understand how .it extension works. No matter how many times I tried to explain. Hopefully you are more inclined to listen πŸ˜†

NIC (Italian Registry) supports way more than just .it extension. At the moment of writing this, there are 252 additional extensions. Here is the list.

Array
(
    [0] => .ag.it
    [1] => .al.it
    [2] => .an.it
    [3] => .ao.it
    [4] => .aq.it
    [5] => .ar.it
    [6] => .ap.it
    [7] => .at.it
    [8] => .av.it
    [9] => .ba.it
    [10] => .bt.it
    [11] => .bl.it
    [12] => .bn.it
    [13] => .bg.it
    [14] => .bi.it
    [15] => .bo.it
    [16] => .bz.it
    [17] => .bs.it
    [18] => .br.it
    [19] => .ca.it
    [20] => .cl.it
    [21] => .cb.it
    [22] => .ci.it
    [23] => .ce.it
    [24] => .ct.it
    [25] => .cz.it
    [26] => .ch.it
    [27] => .co.it
    [28] => .cs.it
    [29] => .cr.it
    [30] => .kr.it
    [31] => .cn.it
    [32] => .en.it
    [33] => .fm.it
    [34] => .fe.it
    [35] => .fi.it
    [36] => .fg.it
    [37] => .fc.it
    [38] => .fr.it
    [39] => .ge.it
    [40] => .go.it
    [41] => .gr.it
    [42] => .im.it
    [43] => .is.it
    [44] => .sp.it
    [45] => .lt.it
    [46] => .le.it
    [47] => .lc.it
    [48] => .li.it
    [49] => .lo.it
    [50] => .lu.it
    [51] => .mc.it
    [52] => .mn.it
    [53] => .ms.it
    [54] => .mt.it
    [55] => .vs.it
    [56] => .me.it
    [57] => .mi.it
    [58] => .mo.it
    [59] => .mb.it
    [60] => .na.it
    [61] => .no.it
    [62] => .nu.it
    [63] => .og.it
    [64] => .ot.it
    [65] => .or.it
    [66] => .pd.it
    [67] => .pa.it
    [68] => .pr.it
    [69] => .pv.it
    [70] => .pg.it
    [71] => .pu.it
    [72] => .pe.it
    [73] => .pc.it
    [74] => .pi.it
    [75] => .pt.it
    [76] => .pn.it
    [77] => .pz.it
    [78] => .po.it
    [79] => .rg.it
    [80] => .ra.it
    [81] => .rc.it
    [82] => .re.it
    [83] => .ri.it
    [84] => .rn.it
    [85] => .rm.it
    [86] => .ro.it
    [87] => .sa.it
    [88] => .ss.it
    [89] => .sv.it
    [90] => .si.it
    [91] => .sr.it
    [92] => .so.it
    [93] => .ta.it
    [94] => .te.it
    [95] => .tr.it
    [96] => .to.it
    [97] => .tp.it
    [98] => .tn.it
    [99] => .tv.it
    [100] => .ts.it
    [101] => .ud.it
    [102] => .va.it
    [103] => .ve.it
    [104] => .vb.it
    [105] => .vc.it
    [106] => .vr.it
    [107] => .vv.it
    [108] => .vi.it
    [109] => .vt.it
    [110] => .agrigento.it
    [111] => .alessandria.it
    [112] => .ancona.it
    [113] => .aosta.it
    [114] => .laquila.it
    [115] => .arezzo.it
    [116] => .ascoli-piceno.it
    [117] => .ascolipiceno.it
    [118] => .asti.it
    [119] => .avellino.it
    [120] => .bari.it
    [121] => .barletta-andria-trani.it
    [122] => .barlettaandriatrani.it
    [123] => .belluno.it
    [124] => .benevento.it
    [125] => .bergamo.it
    [126] => .biella.it
    [127] => .bologna.it
    [128] => .bolzano.it
    [129] => .brescia.it
    [130] => .brindisi.it
    [131] => .cagliari.it
    [132] => .caltanissetta.it
    [133] => .campobasso.it
    [134] => .carbonia-iglesias.it
    [135] => .carboniaiglesias.it
    [136] => .caserta.it
    [137] => .catania.it
    [138] => .catanzaro.it
    [139] => .chieti.it
    [140] => .como.it
    [141] => .cosenza.it
    [142] => .cremona.it
    [143] => .crotone.it
    [144] => .cuneo.it
    [145] => .enna.it
    [146] => .fermo.it
    [147] => .ferrara.it
    [148] => .firenze.it
    [149] => .foggia.it
    [150] => .forli-cesena.it
    [151] => .forlicesena.it
    [152] => .frosinone.it
    [153] => .genova.it
    [154] => .gorizia.it
    [155] => .grosseto.it
    [156] => .imperia.it
    [157] => .isernia.it
    [158] => .la-spezia.it
    [159] => .latina.it
    [160] => .lecce.it
    [161] => .lecco.it
    [162] => .livorno.it
    [163] => .lodi.it
    [164] => .lucca.it
    [165] => .macerata.it
    [166] => .mantova.it
    [167] => .massa-carrara.it
    [168] => .massacarrara.it
    [169] => .matera.it
    [170] => .medio-campidano.it
    [171] => .mediocampidano.it
    [172] => .messina.it
    [173] => .milano.it
    [174] => .modena.it
    [175] => .monza-brianza.it
    [176] => .monzabrianza.it
    [177] => .napoli.it
    [178] => .novara.it
    [179] => .nuoro.it
    [180] => .ogliastra.it
    [181] => .olbia-tempio.it
    [182] => .olbiatempio.it
    [183] => .oristano.it
    [184] => .padova.it
    [185] => .palermo.it
    [186] => .parma.it
    [187] => .pavia.it
    [188] => .perugia.it
    [189] => .pesaro-urbino.it
    [190] => .pesarourbino.it
    [191] => .pescara.it
    [192] => .piacenza.it
    [193] => .pisa.it
    [194] => .pistoia.it
    [195] => .pordenone.it
    [196] => .potenza.it
    [197] => .prato.it
    [198] => .ragusa.it
    [199] => .ravenna.it
    [200] => .reggio-calabria.it
    [201] => .reggiocalabria.it
    [202] => .reggio-emilia.it
    [203] => .reggioemilia.it
    [204] => .rieti.it
    [205] => .rimini.it
    [206] => .roma.it
    [207] => .rovigo.it
    [208] => .salerno.it
    [209] => .sassari.it
    [210] => .savona.it
    [211] => .siena.it
    [212] => .siracusa.it
    [213] => .sondrio.it
    [214] => .taranto.it
    [215] => .teramo.it
    [216] => .terni.it
    [217] => .torino.it
    [218] => .trapani.it
    [219] => .trento.it
    [220] => .treviso.it
    [221] => .trieste.it
    [222] => .udine.it
    [223] => .varese.it
    [224] => .venezia.it
    [225] => .verbania.it
    [226] => .vercelli.it
    [227] => .verona.it
    [228] => .vibo-valentia.it
    [229] => .vibovalentia.it
    [230] => .vicenza.it
    [231] => .viterbo.it
    [232] => .abruzzo.it
    [233] => .basilicata.it
    [234] => .calabria.it
    [235] => .campania.it
    [236] => .emiliaromagna.it
    [237] => .friuliveneziagiulia.it
    [238] => .lazio.it
    [239] => .liguria.it
    [240] => .lombardia.it
    [241] => .marche.it
    [242] => .molise.it
    [243] => .piemonte.it
    [244] => .puglia.it
    [245] => .sardegna.it
    [246] => .sicilia.it
    [247] => .toscana.it
    [248] => .trentinoaltoadige.it
    [249] => .umbria.it
    [250] => .valledaosta.it
    [251] => .veneto.it
)

In essence NIC lets you prefix .it with Italian regions (eg. abruzzo.it, sicilia.it) and provinces both as short-codes (eg. rm.it, mi.it) and full names (roma.it, milano.it). In other words you can register things like:

Don't panic now πŸ˜› All these additional extensions have the same costs of .it and do not require any tuning to work. Registering example.it and example.milano.it is the same exact thing. You don't even have to change anything for whois.

Okay so what's the problem? Additional domain fields. As I said earlier, all these extensions works exactly like .it meaning that they require the same parameters. The question is that ibs_additionaldomainfields.php has rules just for .it.

/* * ************* START .IT****************** */
$additionaldomainfields[".it"] = [];
$additionaldomainfields[".it"]["legalentity"] = [
    "Name" => "Legal Entity Type",
    "DisplayName" => "Holder Type",
    "Type" => "dropdown",
    "Options" => "1. Italian and foreign natural persons|1. Italian and foreign natural persons,2. Companies/one man companies|2. Companies/one man companies,3. Freelance workers/professionals|3. Freelance workers/professionals,4. non-profit organizations|4. non-profit organizations,5. public organizations|5. public organizations,6. other subjects|6. other subjects,7. foreigners who match 2 - 6|7. foreigners who match 2 - 6",
    "Default" => "1. Italian and foreign natural persons",
    "Required" => true,
    "LangVar" => "itLegalEntity"
];

$additionaldomainfields[".it"]["nationality"] = [
    "Name" => "Nationality",
    "DisplayName" => "Nationality",
    "Type" => "dropdown",
    "Options" => "AF|Afghanistan,AX|Aland Islands,AL|Albania,DZ|Algeria,AS|American Samoa,AD|Andorra,AO|Angola,AI|Anguilla,AQ|Antarctica,AG|Antigua and Barbuda,AR|Argentina,AM|Armenia,AW|Aruba,AU|Australia,AT|Austria,AZ|Azerbaijan,BS|Bahamas,BH|Bahrain,BD|Bangladesh,BB|Barbados,BY|Belarus,BE|Belgium,BZ|Belize,BJ|Benin,BM|Bermuda,BT|Bhutan,BO|Bolivia,BA|Bosnia and Herzegovina,BW|Botswana,BV|Bouvet Island,BR|Brazil,IO|British Indian Ocean Territory,VG|British Virgin Islands,BN|Brunei,BG|Bulgaria,BF|Burkina Faso,BI|Burundi,KH|Cambodia,CM|Cameroon,CA|Canada,CV|Cape Verde,KY|Cayman Islands,CF|Central African Republic,TD|Chad,CL|Chile,CN|China,CX|Christmas Island,CC|Cocos (Keeling) Islands,CO|Colombia,KM|Comoros,CG|Congo,CK|Cook Islands,CR|Costa Rica,HR|Croatia,CU|Cuba,CY|Cyprus,CZ|Czech Republic,CD|Democratic Republic of Congo,DK|Denmark,DJ|Djibouti,DM|Dominica,DO|Dominican Republic,TL|East Timor,EC|Ecuador,EG|Egypt,SV|El Salvador,GQ|Equatorial Guinea,ER|EritreaEE|Estonia,ET|Ethiopia,FK|Falkland Islands,FO|Faroe Islands,FM|Federated States of Micronesia,FJ|FijiFI|Finland,FR|FranceGF|French Guyana,PF|French Polynesia,TF|French Southern Territories,GA|Gabon,GM|Gambia,GE|Georgia,DE|Germany,GH|Ghana,GI|Gibraltar,GR|Greece,GL|Greenland,GD|Grenada,GP|Guadeloupe,GU|Guam,GT|Guatemala,GN|Guinea,GW|Guinea-Bissau,GY|Guyana,HT|Haiti,HM|Heard Island and Mcdonald Islands,HN|Honduras,HK|Hong Kong,HU|Hungary,IS|Iceland,IN|India,ID|Indonesia,IR|Iran,IQ|Iraq,IE|Ireland,IL|Israel,IT|Italy,CI|Ivory Coast,JM|Jamaica,JP|Japan,JO|Jordan,KZ|Kazakhstan,KE|Kenya,KI|Kiribati,KW|Kuwait,KG|Kyrgyzstan,LA|Laos,LV|Latvia,LB|Lebanon,LS|Lesotho,LR|Liberia,LY|Libya,LI|Liechtenstein,LT|Lithuania,LU|Luxembourg,MO|Macau,MK|Macedonia,MG|Madagascar,MW|Malawi,MY|Malaysia,MV|Maldives,ML|Mali,MT|Malta,MH|Marshall Islands,MQ|Martinique,MR|Mauritania,MU|Mauritius,YT|Mayotte,MX|Mexico,MD|Moldova,MC|Monaco,MN|Mongolia,ME|Montenegro,MS|Montserrat,MA|Morocco,MZ|Mozambique,MM|Myanmar,NA|Namibia,NR|Nauru,NP|Nepal,NL|Netherlands,AN|Netherlands Antilles,NC|New Caledonia,NZ|New Zealand,NI|Nicaragua,NE|Niger,NG|Nigeria,NU|Niue,NF|Norfolk Island,KP|North Korea,MP|Northern Mariana Islands,NO|Norway,OM|Oman,PK|Pakistan,PW|Palau,PS|Palestinian Occupied Territories,PA|Panama,PG|Papua New Guinea,PY|Paraguay,PE|Peru,PH|Philippines,PN|Pitcairn Islands,PL|Poland,PT|Portugal,PR|Puerto Rico,QA|Qatar,RE|Reunion,RO|Romania,RU|Russia,RW|Rwanda,SH|Saint Helena and Dependencies,KN|Saint Kitts and Nevis,LC|Saint Lucia,PM|Saint Pierre and Miquelon,VC|Saint Vincent and the Grenadines,WS|Samoa,SM|San Marino,ST|Sao Tome and Principe,SA|Saudi Arabia,SN|Senegal,RS|Serbia,SC|Seychelles,SL|Sierra Leone,SG|Singapore,SK|Slovakia,SI|Slovenia,SB|Solomon Islands,SO|Somalia,ZA|South Africa,GS|South Georgia and South Sandwich Islands,KR|South Korea,ES|Spain,LK|Sri Lanka,SD|Sudan,SR|Suriname,SJ|Svalbard and Jan Mayen,SZ|Swaziland,SE|Sweden,CH|Switzerland,SY|Syria,TW|Taiwan,TJ|Tajikistan,TZ|Tanzania,TH|Thailand,TG|Togo,TK|Tokelau,TO|Tonga,TT|Trinidad and Tobago,TN|Tunisia,TR|Turkey,TM|Turkmenistan,TC|Turks And Caicos Islands,TV|Tuvalu,VI|US Virgin Islands,UG|Uganda,UA|Ukraine,AE|United Arab Emirates,GB|United Kingdom,US|United States,UM|United States Minor Outlying Islands,UY|UruguayUZ|Uzbekistan,VU|Vanuatu,VA|Vatican City,VE|Venezuela,VN|Vietnam,WF|Wallis and Futuna,EH|Western Sahara,YE|Yemen,ZM|Zambia,ZW|Zimbabwe",
    "Default" => "IT",
    "Required" => true,
    "LAngVar" => "itNationality",
];
//for ugrade need to execute: UPDATE `tbldomainsadditionalfields` INNER JOIN `tbldomains` ON `tbldomains`.id=`tbldomainsadditionalfields`.`domainid` SET `tbldomainsadditionalfields`.`name`="VATTAXPassportIDNumber" WHERE `tbldomainsadditionalfields`.`name`="VAT/TAX/Passport/ID Number" AND `tbldomains`.`registrar`="ibs"
$additionaldomainfields[".it"]["identificationnumber"] = [
    "Name" => "VATTAXPassportIDNumber",
    "DisplayName" => "VAT/TAX/Passport/ID Number",
    "Type" => "text",
    "Size" => "30",
    "Default" => "",
    "Required" => true,
    "LangVar" => "itIdentificationNumber",
];

$additionaldomainfields[".it"]["whois"] = [
    "Name" => "Hide data in public WHOIS",
    "DisplayName" => "Hide data in public WHOIS",
    "Type" => "tickbox",
    "LangVar" => "itWhois",
];

$additionaldomainfields[".it"]["terms"] = [
    "Name" => "itterms",
    "DisplayName" => "Accept .it registry <a href=\"itterms.html\" target=\"_blank\">terms and conditions</a>",
    "Type" => "tickbox",
    "Required" => true,
    "LangVar" => "itTerms",
];

/************** END .IT*******************/

All you need to do is adding a foreach at the very end or this section so that the above parameters are replicated for all other 252 extension as follows.

/************** START .IT REGIONS AND PROVINCES*******************/
$additional_it_extensions = [ '.ag.it', '.al.it', '.an.it', '.ao.it', '.aq.it', '.ar.it', '.ap.it', '.at.it', '.av.it', '.ba.it', '.bt.it', '.bl.it', '.bn.it', '.bg.it', '.bi.it', '.bo.it', '.bz.it', '.bs.it', '.br.it', '.ca.it', '.cl.it', '.cb.it', '.ci.it', '.ce.it', '.ct.it', '.cz.it', '.ch.it', '.co.it', '.cs.it', '.cr.it', '.kr.it', '.cn.it', '.en.it', '.fm.it', '.fe.it', '.fi.it', '.fg.it', '.fc.it', '.fr.it', '.ge.it', '.go.it', '.gr.it', '.im.it', '.is.it', '.sp.it', '.lt.it', '.le.it', '.lc.it', '.li.it', '.lo.it', '.lu.it', '.mc.it', '.mn.it', '.ms.it', '.mt.it', '.vs.it', '.me.it', '.mi.it', '.mo.it', '.mb.it', '.na.it', '.no.it', '.nu.it', '.og.it', '.ot.it', '.or.it', '.pd.it', '.pa.it', '.pr.it', '.pv.it', '.pg.it', '.pu.it', '.pe.it', '.pc.it', '.pi.it', '.pt.it', '.pn.it', '.pz.it', '.po.it', '.rg.it', '.ra.it', '.rc.it', '.re.it', '.ri.it', '.rn.it', '.rm.it', '.ro.it', '.sa.it', '.ss.it', '.sv.it', '.si.it', '.sr.it', '.so.it', '.ta.it', '.te.it', '.tr.it', '.to.it', '.tp.it', '.tn.it', '.tv.it', '.ts.it', '.ud.it', '.va.it', '.ve.it', '.vb.it', '.vc.it', '.vr.it', '.vv.it', '.vi.it', '.vt.it', '.agrigento.it', '.alessandria.it', '.ancona.it', '.aosta.it', '.laquila.it', '.arezzo.it', '.ascoli-piceno.it', '.ascolipiceno.it', '.asti.it', '.avellino.it', '.bari.it', '.barletta-andria-trani.it', '.barlettaandriatrani.it', '.belluno.it', '.benevento.it', '.bergamo.it', '.biella.it', '.bologna.it', '.bolzano.it', '.brescia.it', '.brindisi.it', '.cagliari.it', '.caltanissetta.it', '.campobasso.it', '.carbonia-iglesias.it', '.carboniaiglesias.it', '.caserta.it', '.catania.it', '.catanzaro.it', '.chieti.it', '.como.it', '.cosenza.it', '.cremona.it', '.crotone.it', '.cuneo.it', '.enna.it', '.fermo.it', '.ferrara.it', '.firenze.it', '.foggia.it', '.forli-cesena.it', '.forlicesena.it', '.frosinone.it', '.genova.it', '.gorizia.it', '.grosseto.it', '.imperia.it', '.isernia.it', '.la-spezia.it', '.latina.it', '.lecce.it', '.lecco.it', '.livorno.it', '.lodi.it', '.lucca.it', '.macerata.it', '.mantova.it', '.massa-carrara.it', '.massacarrara.it', '.matera.it', '.medio-campidano.it', '.mediocampidano.it', '.messina.it', '.milano.it', '.modena.it', '.monza-brianza.it', '.monzabrianza.it', '.napoli.it', '.novara.it', '.nuoro.it', '.ogliastra.it', '.olbia-tempio.it', '.olbiatempio.it', '.oristano.it', '.padova.it', '.palermo.it', '.parma.it', '.pavia.it', '.perugia.it', '.pesaro-urbino.it', '.pesarourbino.it', '.pescara.it', '.piacenza.it', '.pisa.it', '.pistoia.it', '.pordenone.it', '.potenza.it', '.prato.it', '.ragusa.it', '.ravenna.it', '.reggio-calabria.it', '.reggiocalabria.it', '.reggio-emilia.it', '.reggioemilia.it', '.rieti.it', '.rimini.it', '.roma.it', '.rovigo.it', '.salerno.it', '.sassari.it', '.savona.it', '.siena.it', '.siracusa.it', '.sondrio.it', '.taranto.it', '.teramo.it', '.terni.it', '.torino.it', '.trapani.it', '.trento.it', '.treviso.it', '.trieste.it', '.udine.it', '.varese.it', '.venezia.it', '.verbania.it', '.vercelli.it', '.verona.it', '.vibo-valentia.it', '.vibovalentia.it', '.vicenza.it', '.viterbo.it', '.abruzzo.it', '.basilicata.it', '.calabria.it', '.campania.it', '.emiliaromagna.it', '.friuliveneziagiulia.it', '.lazio.it', '.liguria.it', '.lombardia.it', '.marche.it', '.molise.it', '.piemonte.it', '.puglia.it', '.sardegna.it', '.sicilia.it', '.toscana.it', '.trentinoaltoadige.it', '.umbria.it', '.valledaosta.it', '.veneto.it' ];

foreach ($additional_it_extensions as $extension) {

    foreach ($additionaldomainfields['.it'] as $params) {

        $additionaldomainfields[$extension] = $params;
    }
}

/************** END .IT REGIONS AND PROVINCES*******************/

In all these years I never managed to get IBS to add this simple change hence I always had to add it manually on every system I manage. Could you consider to include it? Make sure that it works for you (I assume no responsibility 😁). For what is worth I'm using it from more than a decade on hundreds of WHMCS.

KaiSchwarz-cnic commented 1 year ago

@Kian987 phew :dancers:

Let me see what I can do... Thanks for that feedback, very helpful.

KaiSchwarz-cnic commented 1 year ago

@Kian987 v4.0.6 is now including the .it 3rd level TLD additional fields.

KaiSchwarz-cnic commented 1 year ago

@Kian987 regarding the .it registration you addressed: we received the html entity in the lastname - is that part of customer data? Can you check that please?

KaiSchwarz-cnic commented 1 year ago

@Kian987 just fyi as it is .it related - 4.0.7 patched an issue with TransferDomain (registrant_dotitnationality).

Kian987 commented 1 year ago

@Kian987 regarding the .it registration you addressed: we received the html entity in the lastname - is that part of customer data? Can you check that please?

This is all we have in tbldomainsadditionalfields for the given domain.

immagine

As you can see entity is set in Legal Entity Type field.

As for lastname, as you can see from the screenshot I included in my first post (this one), every *_lastname parameter (registrant_lastname, technical_lastname, billing_lastname) is the same and corresponds to user's lastname. There's no entity here.

Kian987 commented 1 year ago

As for savecontactdetails (or Domain/Update) that never works since always, I found out why.

The page from which endusers update their details (clientarea.php?action=domaincontacts&domainid={DOMAIN_ID}) doesn't pick up additional domain fields. The problem occurs with all TLDs that require at least one mandatory additional domain field.

I don't know if the page in question is supposed to iterate over additional domain fields so that such fields can be seen and edited or if the module just loads them automatically on save (no edit supported), but for sure IBS module is not transmitting any additional field.

That's why the update never works from years. It can only work with TLDs that do not have any mandatory additional field.

KaiSchwarz-cnic commented 1 year ago

The page from which endusers update their details (clientarea.php?action=domaincontacts&domainid={DOMAIN_ID}) doesn't pick up additional domain fields. The problem occurs with all TLDs that require at least one mandatory additional domain field.

Yes, that's the design of WHMCS. If I recall correctly, the IBS Integration has a additional fields sub menu entry on client area. There such fields can be filled and submitted and finally followed by the Contact Data update. The design of whmcs is in that regard not following best practices ... In Registrar Frontends, you always see the contact data form together with additional domain fields (which makes sense to avoid a two-step update process).

WHMCS is including the fields then in $params when contact data is submitted. In case there's nothing broken with the module, the fields are mapped into the API Command and included in the API request.

The IBS Integration isn't therefore the bad guy, it starts with WHMCS in 1st line - still, I'll have to check .it fields after the findings for the IBS API have been patched (your initial reported case) - they are on it.

KaiSchwarz-cnic commented 1 year ago

A patch has been rolled out for the .IT registration on API-side. The only thing questionable to us is: d&#039;Alessandro which is indeed invalid and should be d'Alessandro. Where is that exactly coming from?

I checked the HEXONET integration and there, we do have an explicit html_entity_decode call in place. Looks like WHMCS is messing up the data for some reason -> I could imagine the Transliteration Process to have an impact. https://docs.whmcs.com/Custom_Transliteration

WHMCS comes with a default integrated transliteration which could be the cause or if you have a custom one in place, that one. Just my two cents.

I took now the hexonet solution over and I guess that will do the trick. v4.0.8 is out.

KaiSchwarz-cnic commented 1 year ago

@Kian987 I moved the additional field topic out to a separate github issue and explained it there again. We'll keep that one updated, but as there's a way provided via IBS - we consider it as not urgent which leaves us also time for digging deeper and playing around with child themes, hooks, ... and talking to WHMCS.