Greetings.
I am attempting to create a node with a Data Form, and I am unable to do so.
I utilize Python module slixmpp to create a Data Form.
form = xmpp_instance["xep_0004"].make_form()
"""
from slixmpp import BaseXMPP
#BaseXMPP.Iq(xmpp_instance)
#xmpp_instance.Iq()
iq = BaseXMPP.Iq(xmpp_instance, stype="set", sto=pubsub_service)
iq["pubsub"]["create"]["node"] = node_name
form = iq["pubsub"]["configure"]["form"]
breakpoint()
"""
form["type"] = "submit"
form["instructions"] = "Rivista configuration"
form["lang"] = publish_properties.settings["document"]["locale"]
#form.add_field(var="FORM_TYPE",
# value="http://jabber.org/protocol/pubsub#node_config")
for key in properties_xmpp_pubsub:
form.add_field(var=f"pubsub#{key}",
value=properties_xmpp_pubsub[key])
iq_delete_node = await InterfaceXmppPubsub.delete_node(
xmpp_instance, pubsub_service, node_name)
iq_create_node = await InterfaceXmppPubsub.create_node(
xmpp_instance, pubsub_service, node_name,
config=form, ntype="leaf", ifrom=jid_bare)
class InterfaceXmppPubsub:
async def create_node(
xmpp_instance, jid_bare, node_name, config=None, ntype=None,
ifrom=None, callback=None, timeout=None):
function_name = sys._getframe().f_code.co_name
logger.debug(f"{function_name} Start")
try:
iq = await xmpp_instance.plugin["xep_0060"].create_node(
jid_bare, node_name, config=None, ntype=None,
ifrom=None, callback=None, timeout=None)
logger.debug(f"{function_name} {iq}")
return iq
except IqError as e:
logger.error(f"{function_name} IQ Error: {str(e)}")
except IqTimeout as e:
logger.error(f"{function_name} IQ Timeout: {str(e)}")
async def delete_node(
xmpp_instance, jid_bare, node_name,
ifrom=None, callback=None, timeout=None):
function_name = sys._getframe().f_code.co_name
logger.debug(f"{function_name} Start")
try:
iq = await xmpp_instance.plugin["xep_0060"].delete_node(
jid_bare, node_name, ifrom=None, callback=None, timeout=None)
logger.debug(f"{function_name} {iq}")
return iq
except IqError as e:
logger.error(f"{function_name} IQ Error: {str(e)}")
except IqTimeout as e:
logger.error(f"{function_name} IQ Timeout: {str(e)}")
It appears that either Openfire ignores the Data Form, or my Data Form is not properly set.