web based registration using ejabberdctl?

Hi, I'm trying to write a web based registration form that uses ejabberdctl to actually create the new accounts. I'm using Apache+PHP for this, my code looks like

putenv("HOME=$apache_home");
system("$ejabberdctl $ejabberd_nodename register $user $server $pass");

$HOME is writeable by the apache process but nevertheless the response looks like this:

{error_logger,{{2005,11,9},{12,16,44}},'Failed to create cookie file',[]} {error_logger,{{2005,11,9},{12,16,44}},crash_report,[[{pid,<0.18.0>},{registered_name,auth},{error_info,{'Failed to create cookie file',[{auth,init_cookie,0},{auth,init,1},{gen_server,init_it,6},{proc_lib,init_p,5}]}},{initial_call,{gen,init_it,[gen_server,<0.16.0>,<0.16.0>,{local,auth},auth,[],[]]}},{ancestors,[net_sup,kernel_sup,<0.8.0>]},{messages,[]},{links,[<0.16.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,377},{stack_size,21},{reductions,515}],[]]} {error_logger,{{2005,11,9},{12,16,44}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'Failed to create cookie file',[{auth,init_cookie,0},{auth,init,1},{gen_server,init_it,6},{proc_lib,init_p,5}]}},{offender,[{pid,undefined},{name,auth},{mfa,{auth,start_link,[]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]} {error_logger,{{2005,11,9},{12,16,44}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]} {error_logger,{{2005,11,9},{12,16,44}},crash_report,[[{pid,<0.7.0>},{registered_name,[]},{error_info,{shutdown,{kernel,start,[normal,[]]}}},{initial_call,{application_master,init,[<0.5.0>,<0.6.0>,{appl_data,kernel,[application_controller,erl_reply,auth,boot_server,code_server,disk_log_server,disk_log_sup,erl_prim_loader,error_logger,file_server,file_server_2,fixtable_server,global_group,global_name_server,heart,init,kernel_config,kernel_sup,net_kernel,net_sup,rex,user,os_server,ddll_server,erl_epmd,inet_db,pg2],undefined,{kernel,[]},[application,application_controller,application_master,application_starter,auth,code,code_aux,packages,code_server,dist_util,erl_boot_server,erl_distribution,erl_prim_loader,erl_reply,erlang,error_handler,error_logger,file,file_server,old_file_server,file_io_server,prim_file,global,global_group,global_search,group,heart,hipe_unified_loader,hipe_sparc_loader,hipe_ppc_loader,hipe_ppc64_loader,hipe_x86_loader,hipe_amd64_loader,inet6_tcp,inet6_tcp_dist,inet6_udp,inet_config,inet_hosts,inet_gethost_native,inet_tcp_dist,init,kernel,kernel_config,net,net_adm,net_kernel,os,ram_file,rpc,user,user_drv,user_sup,disk_log,disk_log_1,disk_log_server,disk_log_sup,dist_ac,erl_ddll,erl_epmd,erts_debug,gen_tcp,gen_udp,prim_inet,inet,inet_db,inet_dns,inet_parse,inet_res,inet_tcp,inet_udp,pg2,seq_trace,wrap_log_reader,zlib,otp_ring0],[],infinity,infinity},normal]}},{ancestors,[<0.6.0>]},{messages,[{'EXIT',<0.8.0>,normal}]},{links,[<0.6.0>,<0.5.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,987},{stack_size,21},{reductions,1041}],[]]} {error_logger,{{2005,11,9},{12,16,44}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]} {"Kernel pid terminated",application_controller,shutdown}

Has someone got a hint for me what could be wrong here? Or is there a better solution to it than using ejabberdctl after all?

Cheers, Steve

solved

ok, sorry, forget about it. Although I really double checked file permissions there must have been some misttake. I deleted the corresponding .erlang.cookie file, copied over the one from ejabberd's user and now it works. cheers, steve

You also can use

You also can use XML-RPC.
--
sander

thanks, I already stumbled across this

thanks, I stumbled across this too, would be much more lightweight to use but now that it works I'll give my ejabberdctl based solution a try ;)

Syndicate content