Невозможно заставить чат один на один работать с ejabberd и XMPP-клиентом Psi + - PullRequest
1 голос
/ 10 июня 2019
Mac OSX 10.13.6
ejabberd 19.05

Я использовал программу установки для установки ejabberd, и когда мне предложили, я ввел следующую информацию:

ejabberd server domain: localhost
administrator username: 7stud
administrator password: blahblah

Я следую учебному пособию: Как создать приложение чата One-to-OneИспользование Ejabberd & Erlang из Scratch? .

Если я запускаю ejabberd, щелкая исполняемый файл start в каталоге ejabberd-19.05/bin, запускается ejabberd, и в моем браузере открывается веб-страница.После этого я могу войти в веб-интерфейс администратора.

Но учебник предписывает мне добавить в файл ejabberd.yml следующее:

auth_method: sql
sql_type: mysql
sql_server: "localhost" 
sql_database: "chat" 
sql_username: "root" 
sql_password: "" 

(Для моей установки mysql пользователь root не имеетпароль - я просто нажимаю клавишу возврата при появлении запроса на ввод пароля)

После этого, если я остановлю ejabberd, а затем снова запустите ejabberd, я больше не смогу войти на страницу администратора.

IУ меня два вопроса:

  1. Почему добавление конфигурации db в ejabberd.yml не позволяет мне войти в веб-интерфейс администратора?

  2. Почемуконфигурация mysql db даже необходима?Согласно документам ejabberd : ejabberd default backend is Mnesia internal database.Я совершенно счастлив использовать mnesia (и не трогать ejabberd.yml).

Я завершил оставшуюся часть урока и с помощью настроек mysql db в ejabberd.yml ибез, но ни Пользователь1, ни Пользователь2 не получили сообщение, отправленное другим пользователем, поэтому по какой-то причине мои настройки ejabberd не работают.Я также попытался настроить другую базу данных mysql, следуя документам по базе данных ejabberd :

auth_method: sql
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "12345"

Все еще не повезло.

Я готов попробовать любой другой простой учебник, которыйиспользует ejabberd для ретрансляции сообщений, если кто-то может порекомендовать их.

веб-интерфейс администратора :

enter image description here


enter image description here


enter image description here


enter image description here


enter image description here

фунтов на квадратный дюйм + изображения:

enter image description here

enter image description here

enter image description here ejabberd.yml:

###
###'           ejabberd configuration file
###
### The parameters used in this configuration file are explained at
###
###       https://docs.ejabberd.im/admin/configuration
###
### The configuration file is written in YAML.
### *******************************************************
### *******           !!! WARNING !!!               *******
### *******     YAML IS INDENTATION SENSITIVE       *******
### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY *******
### *******************************************************
### 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?
###


language: "en"
hosts:
  - "localhost"

loglevel: 4
log_rotate_size: 10485760
log_rotate_date: ""
log_rotate_count: 1
log_rate_limit: 100

certfiles:
  - "/Applications/ejabberd-19.05/conf/server.pem"
##  - "/etc/letsencrypt/live/localhost/fullchain.pem"
##  - "/etc/letsencrypt/live/localhost/privkey.pem"

ca_file: "/Applications/ejabberd-19.05/conf/cacert.pem"

listen:
  -
    port: 5222
    ip: "::"
    module: ejabberd_c2s
    max_stanza_size: 262144
    shaper: c2s_shaper
    access: c2s
    starttls_required: true
  -
    port: 5269
    ip: "::"
    module: ejabberd_s2s_in
    max_stanza_size: 524288
  -
    port: 5443
    ip: "::"
    module: ejabberd_http
    tls: true
    request_handlers:
      "/admin": ejabberd_web_admin
      "/api": mod_http_api
      "/bosh": mod_bosh
      "/captcha": ejabberd_captcha
      "/upload": mod_http_upload
      "/ws": ejabberd_http_ws
      "/oauth": ejabberd_oauth
  -
    port: 5280
    ip: "::"
    module: ejabberd_http
    request_handlers:
      "/admin": ejabberd_web_admin
  -
    port: 1883
    ip: "::"
    module: mod_mqtt
    backlog: 1000

s2s_use_starttls: optional

acl:
  local:
    user_regexp: ""
  loopback:
    ip:
      - "127.0.0.0/8"
      - "::1/128"
      - "::FFFF:127.0.0.1/128"
  admin:
    user:
      - "7stud@localhost"

access_rules:
  local:
    - allow: local
  c2s:
    - deny: blocked
    - allow
  announce:
    - allow: admin
  configure:
    - allow: admin
  muc_create:
    - allow: local
  pubsub_createnode:
    - allow: local
  trusted_network:
    - allow: loopback

api_permissions:
  "console commands":
    from:
      - ejabberd_ctl
    who: all
    what: "*"
  "admin access":
    who:
      - access:
          - allow:
            - acl: loopback
            - acl: admin
      - oauth:
        - scope: "ejabberd:admin"
        - access:
          - allow:
            - acl: loopback
            - acl: admin
    what:
      - "*"
      - "!stop"
      - "!start"
  "public commands":
    who:
      - ip: "127.0.0.1/8"
    what:
      - "status"
      - "connected_users_number"

shaper:
  normal: 1000
  fast: 50000

shaper_rules:
  max_user_sessions: 10
  max_user_offline_messages:
    - 5000: admin
    - 100
  c2s_shaper:
    - none: admin
    - normal
  s2s_shaper: fast

max_fsm_queue: 10000

acme:
   contact: "mailto:7stud@localhost"
   ca_url: "https://acme-v01.api.letsencrypt.org"

modules:
  mod_adhoc: {}
  mod_admin_extra: {}
  mod_announce:
    access: announce
  mod_avatar: {}
  mod_blocking: {}
  mod_bosh: {}
  mod_caps: {}
  mod_carboncopy: {}
  mod_client_state: {}
  mod_configure: {}
  mod_disco: {}
  mod_fail2ban: {}
  mod_http_api: {}
  mod_http_upload:
    put_url: "https://@HOST@:5443/upload"
  mod_last: {}
  ## mod_mam:
    ## Mnesia is limited to 2GB, better to use an SQL backend
    ## For small servers SQLite is a good fit and is very easy
    ## to configure. Uncomment this when you have SQL configured:
    ## db_type: sql
    ## assume_mam_usage: true
    ## default: always
  mod_mqtt: {}
  mod_muc:
    access:
      - allow
    access_admin:
      - allow: admin
    access_create: muc_create
    access_persistent: muc_create
    default_room_options:
      allow_subscription: true  # enable MucSub
      ## mam: true
  mod_muc_admin: {}
  mod_offline:
    access_max_user_messages: max_user_offline_messages
  mod_ping: {}
  mod_privacy: {}
  mod_private: {}
  mod_proxy65:
    access: local
    max_connections: 5
  mod_pubsub:
    access_createnode: pubsub_createnode
    plugins:
      - "flat"
      - "pep"
    force_node_config:
      ## Avoid buggy clients to make their bookmarks public
      "storage:bookmarks":
        access_model: whitelist
  mod_push: {}
  mod_push_keepalive: {}
  mod_register:
    ## Only accept registration requests from the "trusted"
    ## network (see access_rules section above).
    ## Think twice before enabling registration from any
    ## address. See the Jabber SPAM Manifesto for details:
    ## https://github.com/ge0rg/jabber-spam-fighting-manifesto
    ip_access: trusted_network
  mod_roster:
    versioning: true
  mod_s2s_dialback: {}
  mod_shared_roster: {}
  mod_stream_mgmt:
    resend_on_timeout: if_offline
  mod_vcard: {}
  mod_vcard_xupdate: {}
  mod_version:
    show_os: false

### Local Variables:
### mode: yaml
### End:

  [1]: https://www.apptha.com/blog/steps-to-build-a-private-one-to-one-chat-app/
  [2]: https://docs.ejabberd.im/admin/databases/mysql/

Ответы [ 2 ]

3 голосов
/ 10 июня 2019

Почему добавление конфигурации db в ejabberd.yml не позволяет мне войти в веб-интерфейс администратора?

Как сказал Поурия, вы сначала создали учетную запись в базе данных Mnesia.Затем вы переключаетесь на базу данных MySQL, где эта учетная запись не существует ... поэтому создайте ее снова или используйте export2sql , чтобы экспортировать содержимое Mnesia в файл SQL и импортировать его в базу данных SQL.

Зачем нужна конфигурация mysql db?Согласно ejabberd docs: по умолчанию ejabberd является внутренней базой данных Mnesia.Я очень рад использовать mnesia (и не трогать ejabberd.yml).

Внутренней базы данных Mnesia достаточно для небольших серверов (сотни одновременно работающих пользователей).Если у вас небольшой сервер, этого может быть достаточно.Но если вы планируете иметь большой сервер (тысячи или миллионы одновременно работающих пользователей), лучше использовать базу данных SQL.Также возможно начать использовать Mnesia уже через несколько месяцев и переключить ваш контент и конфигурацию на SQL, когда у вас будет много пользователей.

1 голос
/ 13 июня 2019

Мне нужно настроить базу данных Mnesia по умолчанию в ebjabberd.yml? Как мне это сделать?

Установите ejabberd, ничего не меняйте в файле конфигурации, тогда используется Mnesia.

Нужно ли мне иметь возможность входить в веб-интерфейс администратора, чтобы учебное пособие заработало?

«На работу» - это неоднозначное предложение, поэтому я не могу ответить.

Где я могу создать учетную запись? В Mysql? В Эджаберде?

В ejabberd, как вы сделали с первым аккаунтом, который хранился в Mnesia.

У меня есть два пользователя, которые хотят передать одно сообщение между ними, а именно «привет».

Для двух пользователей .... просто установите ejabberd, зарегистрируйте две учетные записи в ejabberd и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...