login  Naam:   Wachtwoord: 
Registreer je!
 Forum

DirectAdmin API CMD_API_POP (Opgelost)

Offline sanderrebry - 28/12/2015 18:11
Avatar van sanderrebryLid Hallo,

Ik heb een script dat via php e-mail adressen aanmaakt in directadmin via api
Ik krijg steeds een fout terug (dat ik uitlees via $sock->fetch_parsed_body();) dat de user already exists terwijl deze nog niet bestaat in DA.
Het vreemde is:
1. er is niet bewerkt/gewijzigd in mijn script en dat dit ervoor zorgen errors werkte.
2. als ik kijk in het DA panel is effectief het nieuw e-mail adres aangemaakt alleen output via php dat er een error is.
Het script met de functie die het CMD_API_POP aanroept en de waarden uit een formulier neemt:

  1. function darc_nh_create_mail($user,$domein,$pass1,$pass2,$size){
  2. $sock = new HTTPSocket;
  3. $sock->connect(get_option('darc_nh_adresse'), get_option('darc_nh_port','2222'));
  4. $sock->set_login(get_option('darc_nh_account')."|".get_user_meta(get_current_user_id(), "darc_nh_daid", "true" ), get_option('darc_nh_key'));
  5. $sock->set_method('GET');
  6. $sock->query('/CMD_API_POP', array('action' => 'create','domain' => $domein,'user' => $user,'passwd' => $pass1,'passwd2' => $pass2,'quota' => $size));
  7. $result = $sock->fetch_parsed_body();
  8. print_r($result);
  9.  
  10. if($result['error'] == "1"){
  11. echo '<div class="data-control-id-1283 bd-errormessage-1838 alert alert-danger selection-frame-movable">'.__('Could not create the requested mailbox.', 'darc-nh').'</div>';
  12. }elseif($result['error'] == "0"){
  13. echo '<div class="data-control-id-1284 bd-successmessage-1840 alert alert-success">'.__('Created the requested mailbox.', 'darc-nh').'</div>';
  14. }
  15.  
  16. var_dump($result);
  17. }

Als ik deze functie aanroep krijg ik dat de login OK is:

  1. function test(){
  2. $sock = new HTTPSocket;
  3. $sock->connect(get_option('darc_nh_adresse'), get_option('darc_nh_port','2222'));
  4. $sock->set_login(get_option('darc_nh_account')."|".get_user_meta(get_current_user_id(), "darc_nh_daid", "true" ), get_option('darc_nh_key'));
  5. $sock->set_method('GET');
  6. $sock->query('/CMD_API_LOGIN_TEST');
  7. $result1 = $sock->fetch_result();
  8. print_r($result1);
  9. }


Weet iemand hier iets van af?

6 antwoorden

Gesponsorde links
Offline Thomas - 28/12/2015 20:39
Avatar van Thomas Moderator
Citaat:
er is niet bewerkt/gewijzigd in mijn script en dat dit ervoor zorgen errors werkte.

Bedoel je wellicht "dit werkte voorheen wel"? Ik kan geen chocola maken van de bovenstaande zin. Dit zou betekenen dat er "ondertussen" ergens iets veranderd is, wellicht niet in jouw code, maar aan de serverkant?

Uit de rest van je verhaal maak ik op dat:
Indien je een nieuwe gebruiker aanmaakt krijg je de melding dat deze al bestaat, dit terwijl het een nieuwe gebruiker betreft.
Verder zie je een foutmelding in je DA-paneel, dit terwijl de gebruiker/het e-mailadres wel correct aangemaakt lijkt en ook een logintest (die succesvol is) wijst hierop.

Ik zou allereerst kijken naar de aanroep van CMD_API_POP, hierin mis je een parameter limit volgens mij. Er staat geloof ik niet dat deze optioneel is, enkel dat je de waarde leeg kunt laten, dit (optionele parameter, lege waarde) zijn twee verschillende dingen? Mogelijk wordt hier nu strenger op gecontroleerd dan voorheen?

Daarnaast zou ik alle verschillende fouten in afzondering behandelen, anders wordt het hopeloos verwarrend voor jezelf, en niet te volgen voor anderen.
Offline sanderrebry - 28/12/2015 22:51 (laatste wijziging 29/12/2015 00:11)
Avatar van sanderrebry Lid Bedankt voor je reactie Thomas!
Excuseer mij voor de vreemde zin...
Ja inderdaad dat klopt ervoor ging dit perfect zonder errors.
Heb eventjes getest met een ander DA-panel daar krijg ik idem fout in het script
Wat ik even zou kunnen testen is het volledig scriptje op een andere webhosting server plaatsen om te zien of mijn hoster enkele wijzigingen op de server heeft gedaan.
Wat ik wel begin te denken...
In het script staan tal van functions die telkens beginnen in te loggen in directadmin:
Dus maw iedere function begin met deze onderstaande login, als dan in een pagina 3x verschillende functions worden aangeroepen dan is dit 3x inloggen om hetzelfde moment...

  1. $sock = new HTTPSocket;
  2. $sock->connect(get_option('darc_nh_adresse'), get_option('darc_nh_port','2222'));
  3. $sock->set_login(get_option('darc_nh_account')."|".get_user_meta(get_current_user_id(), "darc_nh_daid", "true" ), get_option('darc_nh_key'));
  4. $sock->set_method('GET');
Offline Thomas - 29/12/2015 17:05
Avatar van Thomas Moderator Mja, maar dat zijn allemaal losstaande (HTTP) requests aan de DA API, deze hebben geen kennis van voorstaande gebeurtenissen - ze staan allemaal op zichzelf. Je zult jezelf dus elk request moeten identificeren lijkt mij. Indien je deze logins achterwege laat zou ik "unauthorized" foutmeldingen verwachten.
Offline sanderrebry - 29/12/2015 19:41
Avatar van sanderrebry Lid Probleem gevonden...
Vreemd maar lag aan mijn template....
Nieuwe template geprobeerd en werkt perfect!
Offline Thomas - 29/12/2015 21:24
Avatar van Thomas Moderator Wat bedoel je met template?
En wat is het verschil tussen die twee?
Misschien wel handig om uit te leggen wat er mis ging en wat de oplossing was...
Offline sanderrebry - 04/01/2016 19:49
Avatar van sanderrebry Lid Wat de oorzaak precies was weet ik niet, ik werk met Themler (artisteer) en nadat ik een update terug heb uitgevoerd was de fout opeens weg, ik denk dat dit ergens met één of ander framework zal te maken hebben.
Alvast bedankt voor je hulp!
Mvg,
Sander
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.362s