【问题标题】:ejabberd xml_rpc module not workingejabberd xml_rpc 模块不工作
【发布时间】:2017-04-10 02:11:25
【问题描述】:

每当尝试启动 xml_rpc 模块时,它都会执行如下错误。 代码:

Result : 
abc:4560/RPC2): failed to open stream: No such file or directory 

我遵循与给定link 中解释的相同步骤,但不知何故它不适合我。

我还检查了可能的解决方案,如link 上的解释。

任何想法,任何建议

【问题讨论】:

    标签: ejabberd


    【解决方案1】:

    我在 PHP 中完成了以下示例代码。这可能对你有用-

        <?php
    
      $param=array("user"=>"user2","host"=>"localhost","password"=>"test");
        $request = xmlrpc_encode_request('register', $param, (array('encoding' => 'utf-8')));
        $context = stream_context_create(array('http' => array(
            'method' => "POST",
            'header' => "User-Agent: XMLRPC::Client ejabberd_xmlrpc\r\n" .
                        "Content-Type: text/xml\r\n" .
                        "Content-Length: ".strlen($request),
            'content' => $request
        )));
        $file = file_get_contents("http://localhost:4560", true, $context);
        $response = xmlrpc_decode($file);
        if (xmlrpc_is_fault($response)) {
            trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
        } else {
            print_r($response);
        }
    
        ?>
    

    我的示例 ejabberd 配置文件为 -

    ###
    ###'           ejabberd configuration file
    ###
    ###
    
    ### The parameters used in this configuration file are explained in more detail
    ### in the ejabberd Installation and Operation Guide.
    ### Please consult the Guide in case of doubts, it is included with
    ### your copy of ejabberd, and is also available online at
    ### http://www.process-one.net/en/ejabberd/docs/
    
    ### The configuration file is written in YAML.
    ### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
    ### However, ejabberd treats different literals as different types:
    ###
    ### - unquoted or single-quoted strings. They are called "atoms".
    ###   Example: dog, 'Jupiter', '3.14159', YELLOW
    ###
    ### - numeric literals. Example: 3, -45.0, .0
    ###
    ### - quoted or folded strings.
    ###   Examples of quoted string: "Lizzard", "orange".
    ###   Example of folded string:
    ###   > Art thou not Romeo,
    ###     and a Montague?
    
    ###.  =======
    ###'  LOGGING
    
    ##
    ## loglevel: Verbosity of log files generated by ejabberd.
    ## 0: No ejabberd log at all (not recommended)
    ## 1: Critical
    ## 2: Error
    ## 3: Warning
    ## 4: Info
    ## 5: Debug
    ##
    loglevel: 4
    
    ##
    ## rotation: Describe how to rotate logs. Either size and/or date can trigger
    ## log rotation. Setting count to N keeps N rotated logs. Setting count to 0
    ## does not disable rotation, it instead rotates the file and keeps no previous
    ## versions around. Setting size to X rotate log when it reaches X bytes.
    ## To disable rotation set the size to 0 and the date to ""
    ## Date syntax is taken from the syntax newsyslog uses in newsyslog.conf.
    ## Some examples:
    ##  $D0     rotate every night at midnight
    ##  $D23    rotate every day at 23:00 hr
    ##  $W0D23  rotate every week on Sunday at 23:00 hr
    ##  $W5D16  rotate every week on Friday at 16:00 hr
    ##  $M1D0   rotate on the first day of every month at midnight
    ##  $M5D6   rotate on every 5th day of the month at 6:00 hr
    ##
    log_rotate_size: 10485760
    log_rotate_date: ""
    log_rotate_count: 1
    
    ##
    ## overload protection: If you want to limit the number of messages per second
    ## allowed from error_logger, which is a good idea if you want to avoid a flood
    ## of messages when system is overloaded, you can set a limit.
    ## 100 is ejabberd's default.
    log_rate_limit: 100
    
    ##
    ## watchdog_admins: Only useful for developers: if an ejabberd process
    ## consumes a lot of memory, send live notifications to these XMPP
    ## accounts.
    ##
    ## watchdog_admins:
    ##   - "admin@hightechdesign.com"
    
    ###.  ===============
    ###'  NODE PARAMETERS
    
    ##
    ## net_ticktime: Specifies net_kernel tick time in seconds. This options must have
    ## identical value on all nodes, and in most cases shouldn't be changed at all from
    ## default value.
    ##
    ## net_ticktime: 60
    
    ###.  ================
    ###'  SERVED HOSTNAMES
    
    ##
    ## hosts: Domains served by ejabberd.
    ## You can define one or several, for example:
    ## hosts:
    ##   - "example.net"
    ##   - "example.com"
    ##   - "example.org"
    ##
    hosts:
      - "localhost"
    
    ##
    ## route_subdomains: Delegate subdomains to other XMPP servers.
    ## For example, if this ejabberd serves example.org and you want
    ## to allow communication with an XMPP server called im.example.org.
    ##
    ## route_subdomains: s2s
    
    ###.  ===============
    ###'  LISTENING PORTS
    
    ##
    ## listen: The ports ejabberd will listen on, which service each is handled
    ## by and what options to start it with.
    ##
    listen:
      - 
        port: 5222
        module: ejabberd_c2s
        certfile: "/home/sunil/ejabberd-17.03/conf/server.pem"
        starttls: true
        ## To enforce TLS encryption for client connections,
        ## use this instead of the "starttls" option:
        ##
        ## starttls_required: true
        ##
        ## Custom OpenSSL options
        ##
        protocol_options:
          - "no_sslv3"
        ##   - "no_tlsv1"
        max_stanza_size: 65536
        shaper: c2s_shaper
        access: c2s
      - 
        port: 5269
        module: ejabberd_s2s_in
        max_stanza_size: 131072
        shaper: s2s_shaper
      ##
      ## ejabberd_service: Interact with external components (transports, ...)
      ##
      ## - 
      ##   port: 8888
      ##   module: ejabberd_service
      ##   access: all
      ##   shaper_rule: fast
      ##   ip: "127.0.0.1"
      ##   privilege_access: 
      ##      roster: "both"
      ##      message: "outgoing"
      ##      presence: "roster"
      ##   delegations:
      ##      "urn:xmpp:mam:1":
      ##        filtering: ["node"]
      ##      "http://jabber.org/protocol/pubsub":
      ##        filtering: []
      ##   hosts:
      ##     "icq.example.org":
      ##       password: "secret"
      ##     "sms.example.org":
      ##       password: "secret"
    
      ##
      ## ejabberd_stun: Handles STUN Binding requests
      ##
      ## - 
      ##   port: 3478
      ##   transport: udp
      ##   module: ejabberd_stun
    
      ##
      ## To handle XML-RPC requests that provide admin credentials:
      ##
      - 
        port: 4560
        module: ejabberd_xmlrpc
        maxsessions: 10
        timeout: 5000
        access_commands: [register]
        ##admin:
          ##  commands: all
            ##options: []
      - 
        port: 5280
        module: ejabberd_http
        request_handlers:
          "/websocket": ejabberd_http_ws
          "/api": mod_http_api
        ##  "/pub/archive": mod_http_fileserver
        web_admin: true
        http_bind: true
        register: true
        captcha: false
    
    ###.  ==================
    ###'  S2S GLOBAL OPTIONS
    
    ##
    ## s2s_use_starttls: Enable STARTTLS for S2S connections.
    ## Allowed values are: false optional required required_trusted
    ## You must specify a certificate file.
    ##
    ## s2s_use_starttls: optional
    
    ##
    ## s2s_certfile: Specify a certificate file.
    ##
    ## s2s_certfile: "/home/sunil/ejabberd-17.03/conf/server.pem"
    
    ## Custom OpenSSL options
    ##
    ## s2s_protocol_options:
    ##   - "no_sslv3"
    ##   - "no_tlsv1"
    
    ##
    ## domain_certfile: Specify a different certificate for each served hostname.
    ##
    ## host_config:
    ##   "example.org":
    ##     domain_certfile: "/home/sunil/ejabberd-17.03/conf/example_org.pem"
    ##   "example.com":
    ##     domain_certfile: "/home/sunil/ejabberd-17.03/conf/example_com.pem"
    
    ##
    ## S2S whitelist or blacklist
    ##
    ## Default s2s policy for undefined hosts.
    ##
    ## s2s_access: s2s
    
    ##
    ## Outgoing S2S options
    ##
    ## Preferred address families (which to try first) and connect timeout
    ## in milliseconds.
    ##
    ## outgoing_s2s_families:
    ##   - ipv4
    ##   - ipv6
    ## outgoing_s2s_timeout: 10000
    
    ###.  ==============
    ###'  AUTHENTICATION
    
    ##
    ## auth_method: Method used to authenticate the users.
    ## The default method is the internal.
    ## If you want to use a different method,
    ## comment this line and enable the correct ones.
    ##
    auth_method: internal
    
    ##
    ## Store the plain passwords or hashed for SCRAM:
    ## auth_password_format: plain
    ## auth_password_format: scram
    ##
    ## Define the FQDN if ejabberd doesn't detect it:
    ## fqdn: "server3.example.com"
    
    ##
    ## Authentication using external script
    ## Make sure the script is executable by ejabberd.
    ##
    ## auth_method: external
    ## extauth_program: "/path/to/authentication/script"
    
    ##
    ## Authentication using SQL
    ## Remember to setup a database in the next section.
    ##
    ## auth_method: sql
    
    ##
    ## Authentication using PAM
    ##
    ## auth_method: pam
    ## pam_service: "pamservicename"
    
    ##
    ## Authentication using LDAP
    ##
    ## auth_method: ldap
    ##
    ## List of LDAP servers:
    ## ldap_servers:
    ##   - "localhost"
    ##
    ## Encryption of connection to LDAP servers:
    ## ldap_encrypt: none
    ## ldap_encrypt: tls
    ##
    ## Port to connect to on LDAP servers:
    ## ldap_port: 389
    ## ldap_port: 636
    ##
    ## LDAP manager:
    ## ldap_rootdn: "dc=example,dc=com"
    ##
    ## Password of LDAP manager:
    ## ldap_password: "******"
    ##
    ## Search base of LDAP directory:
    ## ldap_base: "dc=example,dc=com"
    ##
    ## LDAP attribute that holds user ID:
    ## ldap_uids:
    ##   - "mail": "%u@mail.example.org"
    ##
    ## LDAP filter:
    ## ldap_filter: "(objectClass=shadowAccount)"
    
    ##
    ## Anonymous login support:
    ##   auth_method: anonymous
    ##   anonymous_protocol: sasl_anon | login_anon | both
    ##   allow_multiple_connections: true | false
    ##
    ## host_config:
    ##   "public.example.org":
    ##     auth_method: anonymous
    ##     allow_multiple_connections: false
    ##     anonymous_protocol: sasl_anon
    ##
    ## To use both anonymous and internal authentication:
    ##
    ## host_config:
    ##   "public.example.org":
    ##     auth_method:
    ##       - internal
    ##       - anonymous
    
    ###.  ==============
    ###'  DATABASE SETUP
    
    ## ejabberd by default uses the internal Mnesia database,
    ## so you do not necessarily need this section.
    ## This section provides configuration examples in case
    ## you want to use other database backends.
    ## Please consult the ejabberd Guide for details on database creation.
    
    ##
    ## MySQL server:
    ##
    ## sql_type: mysql
    ## sql_server: "server"
    ## sql_database: "database"
    ## sql_username: "username"
    ## sql_password: "password"
    ##
    ## If you want to specify the port:
    ## sql_port: 1234
    
    ##
    ## PostgreSQL server:
    ##
    ## sql_type: pgsql
    ## sql_server: "server"
    ## sql_database: "database"
    ## sql_username: "username"
    ## sql_password: "password"
    ##
    ## If you want to specify the port:
    ## sql_port: 1234
    ##
    ## If you use PostgreSQL, have a large database, and need a
    ## faster but inexact replacement for "select count(*) from users"
    ##
    ## pgsql_users_number_estimate: true
    
    ##
    ## SQLite:
    ##
    ## sql_type: sqlite
    ## sql_database: "/home/sunil/ejabberd-17.03/database/ejabberd.db"
    
    ##
    ## ODBC compatible or MSSQL server:
    ##
    ## sql_type: odbc
    ## sql_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"
    
    ##
    ## Number of connections to open to the database for each virtual host
    ##
    ## sql_pool_size: 10
    
    ##
    ## Interval to make a dummy SQL request to keep the connections to the
    ## database alive. Specify in seconds: for example 28800 means 8 hours
    ##
    ## sql_keepalive_interval: undefined
    
    ###.  ===============
    ###'  TRAFFIC SHAPERS
    
    shaper:
      ##
      ## The "normal" shaper limits traffic speed to 1000 B/s
      ##
      normal: 1000
    
      ##
      ## The "fast" shaper limits traffic speed to 50000 B/s
      ##
      fast: 50000
    
    ##
    ## This option specifies the maximum number of elements in the queue
    ## of the FSM. Refer to the documentation for details.
    ##
    max_fsm_queue: 1000
    
    ###.   ====================
    ###'   ACCESS CONTROL LISTS
    acl:
      ##
      ## The 'admin' ACL grants administrative privileges to XMPP accounts.
      ## You can put here as many accounts as you want.
      ##
      admin:
        user:
          - "admin@localhost"
    
      ##
      ## Blocked users
      ##
      ## blocked:
      ##   user:
      ##     - "baduser@example.org"
      ##     - "test"
    
      ## Local users: don't modify this.
      ##
      local:
        user_regexp: ""
    
      ##
      ## More examples of ACLs
      ##
      ## jabberorg:
      ##   server:
      ##     - "jabber.org"
      ## aleksey:
      ##   user:
      ##     - "aleksey@jabber.ru"
      ## test:
      ##   user_regexp: "^test"
      ##   user_glob: "test*"
    
      ##
      ## Loopback network
      ##
      loopback:
        ip:
          - "127.0.0.0/8"
    
      ##
      ## Bad XMPP servers
      ##
      ## bad_servers:
      ##   server:
      ##     - "xmpp.zombie.org"
      ##     - "xmpp.spam.com"
    
    ##
    ## Define specific ACLs in a virtual host.
    ##
    ## host_config:
    ##   "localhost":
    ##     acl:
    ##       admin:
    ##         user:
    ##           - "bob-local@localhost"
    
    ###.  ============
    ###'  SHAPER RULES
    
    shaper_rules:
      ## Maximum number of simultaneous sessions allowed for a single user:
      max_user_sessions: 10
      ## Maximum number of offline messages that users can have:
      max_user_offline_messages:
        - 5000: admin
        - 100
      ## For C2S connections, all users except admins use the "normal" shaper
      c2s_shaper:
        - none: admin
        - normal
      ## All S2S connections use the "fast" shaper
      s2s_shaper: fast
    
    ###.  ============
    ###'  ACCESS RULES
    access_rules:
      ## This rule allows access only for local users:
      local:
        - allow: local
      ## Only non-blocked users can use c2s connections:
      c2s:
        - allow: all
        - allow
      ## Only admins can send announcement messages:
      announce:
        - allow: admin
      ## Only admins can use the configuration interface:
      configure:
        - allow: admin
      ## Only accounts of the local ejabberd server can create rooms:
      muc_create:
        - allow: local
      ## Only accounts on the local ejabberd server can create Pubsub nodes:
      pubsub_createnode:
        - allow: local
      ## In-band registration allows registration of any possible username.
      ## To disable in-band registration, replace 'allow' with 'deny'.
      register:
        - allow
      ## Only allow to register from localhost
      trusted_network:
        - allow: loopback
      ## Do not establish S2S connections with bad servers
      ## If you enable this you also have to uncomment "s2s_access: s2s"
      ## s2s:
      ##   - deny:
      ##     - ip: "XXX.XXX.XXX.XXX/32"
      ##   - deny:
      ##     - ip: "XXX.XXX.XXX.XXX/32"
      ##   - allow
    
    ## ===============
    ## API PERMISSIONS
    ## ===============
    ##
    ## This section allows you to define who and using what method
    ## can execute commands offered by ejabberd.
    ##
    ## By default "console commands" section allow executing all commands
    ## issued using ejabberdctl command, and "admin access" section allows
    ## users in admin acl that connect from 127.0.0.1 to  execute all
    ## commands except start and stop with any available access method
    ## (ejabberdctl, http-api, xmlrpc depending what is enabled on server).
    ##
    ## If you remove "console commands" there will be one added by
    ## default allowing executing all commands, but if you just change
    ## permissions in it, version from config file will be used instead
    ## of default one.
    ##
    api_permissions:
      "console commands":
        from:
          - ejabberd_ctl
        who: all
        what: "*"
      "admin access":
        who:
          - access:
              - allow:
                - ip: "127.0.0.1/8"
                - acl: all
          - oauth:
            - scope: "ejabberd:admin"
            - access:
              - allow:
                  - ip: "127.0.0.1/8"
                  - acl: admin
        what:
          - "*"
          - "!stop"
          - "!start"
      "public commands":
        who:
          - ip: "127.0.0.1/8"
        what:
          - "status"
          - "connected_users_number"
    
    ## By default the frequency of account registrations from the same IP
    ## is limited to 1 account every 10 minutes. To disable, specify: infinity
    ## registration_timeout: 600
    
    ##
    ## Define specific Access Rules in a virtual host.
    ##
    ## host_config:
    ##   "localhost":
    ##     access:
    ##       c2s:
    ##         - allow: admin
    ##         - deny
    ##       register:
    ##         - deny
    
    ###.  ================
    ###'  DEFAULT LANGUAGE
    
    ##
    ## language: Default language used for server messages.
    ##
    language: "en"
    
    ##
    ## Set a different default language in a virtual host.
    ##
    ## host_config:
    ##   "localhost":
    ##     language: "ru"
    
    ###.  =======
    ###'  CAPTCHA
    
    ##
    ## Full path to a script that generates the image.
    ##
    ## captcha_cmd: "/home/sunil/ejabberd-17.03/lib/ejabberd-17.03/priv/bin/captcha.sh"
    
    ##
    ## Host for the URL and port where ejabberd listens for CAPTCHA requests.
    ##
    ## captcha_host: "hightechdesign.com:5280"
    
    ##
    ## Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
    ##
    ## captcha_limit: 5
    
    ###.  =======
    ###'  MODULES
    
    ##
    ## Modules enabled in all ejabberd virtual hosts.
    ##
    modules:
      mod_adhoc: {}
      mod_admin_extra: {}
      mod_announce: # recommends mod_adhoc
        access: announce
      mod_blocking: {} # requires mod_privacy
      mod_caps: {}
      mod_carboncopy: {}
      mod_client_state: {}
      mod_configure: {} # requires mod_adhoc
      mod_disco: {}
      ## mod_echo: {}
      ## mod_irc: {}
      mod_bosh: {}
      ## mod_http_fileserver:
      ##   docroot: "/var/www"
      ##   accesslog: "/home/sunil/ejabberd-17.03/logs/access.log"
      mod_last: {}
      mod_muc:
        ## host: "conference.@HOST@"
        access:
          - allow
        access_admin:
          - allow: admin
        access_create: muc_create
        access_persistent: muc_create
      mod_muc_admin: {}
      ## mod_muc_log: {}
      ## mod_multicast: {}
      mod_offline:
        access_max_user_messages: max_user_offline_messages
      mod_ping: {}
      ## mod_pres_counter:
      ##   count: 5
      ##   interval: 60
      mod_privacy: {}
      mod_private: {}
      ## mod_proxy65: {}
      mod_pubsub:
        access_createnode: pubsub_createnode
        ## reduces resource comsumption, but XEP incompliant
        ignore_pep_from_offline: true
        ## XEP compliant, but increases resource comsumption
        ## ignore_pep_from_offline: false
        last_item_cache: false
        plugins:
          - "flat"
          - "pep" # pep requires mod_caps
      mod_register:
        ##
        ## Protect In-Band account registrations with CAPTCHA.
        ##
        ##   captcha_protected: true
        ##
        ## Set the minimum informational entropy for passwords.
        ##
        ##   password_strength: 32
        ##
        ## After successful registration, the user receives
        ## a message with this subject and body.
        ##
        welcome_message:
          subject: "Welcome!"
          body: |-
            Hi.
            Welcome to this XMPP server.
        ##
        ## When a user registers, send a notification to
        ## these XMPP accounts.
        ##
        ##   registration_watchers:
        ##     - "admin1@example.org"
        ##
        ## Only clients in the server machine can register accounts
        ##
        ip_access: trusted_network
        ##
        ## Local c2s or remote s2s users cannot register accounts
        ##
        access_from: allow
        access: register
      mod_roster: {}
      mod_shared_roster: {}
      ## mod_stats: {}
      ## mod_time: {}
      mod_vcard:
        search: false
      mod_version: {}
      mod_stream_mgmt: {}
      ##   Non-SASL Authentication (XEP-0078) is now disabled by default
      ##   because it's obsoleted and is used mostly by abandoned
      ##   client software
      ## mod_legacy_auth: {}
      ##   The module for S2S dialback (XEP-0220). Please note that you cannot
      ##   rely solely on dialback if you want to federate with other servers,
      ##   because a lot of servers have dialback disabled and instead rely on
      ##   PKIX authentication. Make sure you have proper certificates installed
      ##   and check your accessibility at https://xmpp.net/
      mod_s2s_dialback: {}
      mod_http_api: {}
    
    ##
    ## Enable modules with custom options in a specific virtual host
    ##
    ## host_config:
    ##   "localhost":
    ##     modules:
    ##       mod_echo:
    ##         host: "mirror.localhost"
    
    ##
    ## Enable modules management via ejabberdctl for installation and
    ## uninstallation of public/private contributed modules
    ## (enabled by default)
    ##
    
    allow_contrib_modules: true
    
    ###.
    ###'
    ### Local Variables:
    ### mode: yaml
    ### End:
    ### vim: set filetype=yaml tabstop=8 foldmarker=###',###. foldmethod=marker:
    

    【讨论】:

    • 感谢您的回复,但每当我尝试使用相同的代码时,它都会返回我,如下所示 file_get_contents("192.168.1.199:4560", false, $context);找不到文件错误。我已经用 ejabberd 旧版本对此进行了检查,但是每当我尝试对最新的 ejabberd 版本执行相同操作时,它都会向我显示上述错误。任何想法 ?有什么建议吗?
    • 我更新了 php 代码并附上了 ejabberd 配置文件。这是工作代码。
    • 错误:“xmlrpc: 错误 -116 未找到所需属性'用户'”每当我发送请求时显示我上面的错误
    • 提供您的 ejabberd 服务器的详细日志。
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多