Support required for GenieACS XMPP Setup

Im setting up GenieACS 1.2.9 with ejabberd XMPP Server but there is no packet from CPE/HomeGateway/ACS to XMPP but when trying from any XMPP Client like astrachat it is working fine.

Please find End to End Configuration and setup info as in sate.

Topology

DNS Setting

Testing ejabberd XMPP using Astrachat client
Astrachat client Setting


Astrachat client showing online

ejabberd Server side configuration
Users:

Check DNS on XMPP server
root@cacti:~# dig cacti.fnlab.com
; <<>> DiG 9.16.1-Ubuntu <<>> cacti.fnlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 31864
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 31340f17eae3ba62 (echoed)
;; QUESTION SECTION:
;cacti.fnlab.com. IN A
;; Query time: 0 msec
;; SERVER: 192.168.200.43#53(192.168.200.43)
;; WHEN: Sat Dec 10 08:41:03 UTC 2022
;; MSG SIZE rcvd: 56
root@cacti:~#

ejabberdctl.cfg

In this file you can configure options that are passed by ejabberdctl

to the erlang runtime system when starting ejabberd

#’ POLL: Kernel polling ([true false])

The kernel polling option requires support in the kernel.

Additionally, you need to enable this feature while compiling Erlang.

Default: true

#POLL=true

#.

#’ SMP: SMP support ([enable auto disable])

Explanation in Erlang/OTP documentation:

enable: starts the Erlang runtime system with SMP support enabled.

This may fail if no runtime system with SMP support is available.

auto: starts the Erlang runtime system with SMP support enabled if it

is available and more than one logical processor are detected.

disable: starts a runtime system without SMP support.

Default: auto

#SMP=auto

#.

#’ ERL_MAX_PORTS: Maximum number of simultaneously open Erlang ports

ejabberd consumes two or three ports for every connection, either

from a client or from another Jabber server. So take this into

account when setting this limit.

Default: 65536 (or 8196 on Windows)

Maximum: 268435456

#ERL_MAX_PORTS=65536

#.

#’ FIREWALL_WINDOW: Range of allowed ports to pass through a firewall

If Ejabberd is configured to run in cluster, and a firewall is blocking ports,

it’s possible to make Erlang use a defined range of port (instead of dynamic

ports) for node communication.

Default: not defined

Example: 4200-4210

#FIREWALL_WINDOW=

#.

#’ INET_DIST_INTERFACE: IP address where this Erlang node listens other nodes

This communication is used by ejabberdctl command line tool,

and in a cluster of several ejabberd nodes.

Default: 0.0.0.0

#INET_DIST_INTERFACE=127.0.0.1

#.

#’ ERL_PROCESSES: Maximum number of Erlang processes

Erlang consumes a lot of lightweight processes. If there is a lot of activity

on ejabberd so that the maximum number of processes is reached, people will

experience greater latency times. As these processes are implemented in

Erlang, and therefore not related to the operating system processes, you do

not have to worry about allowing a huge number of them.

Default: 262144

Maximum: 268435456

#ERL_PROCESSES=262144

#.

#’ ERL_MAX_ETS_TABLES: Maximum number of ETS and Mnesia tables

The number of concurrent ETS and Mnesia tables is limited. When the limit is

reached, errors will appear in the logs:

** Too many db tables **

You can safely increase this limit when starting ejabberd. It impacts memory

consumption but the difference will be quite small.

Default: 2053

#ERL_MAX_ETS_TABLES=2053

#.

#’ ERL_OPTIONS: Additional Erlang options

The next variable allows to specify additional options passed to erlang while

starting ejabberd. Some useful options are -noshell, -detached, -heart. When

ejabberd is started from an init.d script options -noshell and -detached are

added implicitly. See erl(1) for more info.

It might be useful to add “-pa /usr/local/lib/ejabberd/ebin” if you

want to add local modules in this path.

Default: “-env ERL_CRASH_DUMP_BYTES 0”

ERL_OPTIONS=“-env ERL_CRASH_DUMP_BYTES 0”

#.

#’ ERLANG_NODE: Erlang node name

The next variable allows to explicitly specify erlang node for ejabberd

It can be given in different formats:

ERLANG_NODE=ejabberd

Lets erlang add hostname to the node (ejabberd uses short name in this case)

ERLANG_NODE=ejabberd@hostname

Erlang uses node name as is (so make sure that hostname is a real

machine hostname or you’ll not be able to control ejabberd)

ERLANG_NODE=ejabberd@hostname.domainname

The same as previous, but erlang will use long hostname

(see erl (1) manual for details)

Default: ejabberd@localhost

#ERLANG_NODE=ejabberd@localhost

#.

#’ EJABBERD_PID_PATH: ejabberd PID file

Indicate the full path to the ejabberd Process identifier (PID) file.

If this variable is defined, ejabberd writes the PID file when starts,

and deletes it when stops.

Remember to create the directory and grant write permission to ejabberd.

Default: don’t write PID file

EJABBERD_PID_PATH=/run/ejabberd/ejabberd.pid

#.

#’ EJABBERD_CONFIG_PATH: ejabberd configuration file

Specify the full path to the ejabberd configuration file. If the file name has

yml or yaml extension, it is parsed as a YAML file; otherwise, Erlang syntax is

expected.

Default: $ETC_DIR/ejabberd.yml

EJABBERD_CONFIG_PATH=/etc/ejabberd/ejabberd.yml

#.

#’ CONTRIB_MODULES_PATH: contributed ejabberd modules path

Specify the full path to the contributed ejabberd modules. If the path is not

defined, ejabberd will use ~/.ejabberd-modules in home of user running ejabberd.

Note: this is not needed for the ejabberd-mod-* packages

Default: $HOME/.ejabberd-modules

#CONTRIB_MODULES_PATH=/opt/ejabberd-modules

#.

#’ CONTRIB_MODULES_CONF_DIR: configuration directory for contributed modules

Specify the full path to the configuration directory for contributed ejabberd

modules. In order to configure a module named mod_foo, a mod_foo.yml file can

be created in this directory. This file will then be used instead of the

default configuration file provided with the module.

Default: $CONTRIB_MODULES_PATH/conf

CONTRIB_MODULES_CONF_DIR=/etc/ejabberd/modules.d

#.

#’

vim: foldmarker=#',#. foldmethod=marker:

ejabberd.yml

###
### ejabberd configuration file
###
### The parameters used in this configuration file are explained at
###
### Configuring ejabberd | ejabberd Docs
###
### The configuration file is written in YAML.
*### ********************************************************
*### ******* !!! WARNING !!! ********
*### ******* YAML IS INDENTATION SENSITIVE ********
*### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY ********
*### ********************************************************
### Refer to YAML - Wikipedia for the brief description.
###
#

## 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: Disable ejabberd’s internal log rotation, as the Debian package
## uses logrotate(8).
log_rotate_count: 0
log_rotate_date: “”

## hosts: Domains served by ejabberd.
## You can define one or several, for example:
## hosts:
## - “example.net
## - “example.com
## - “example.org

hosts:

certfiles:

    • “/etc/ejabberd/ejabberd.pem”*
      ## - /etc/letsencrypt/live/localhost/fullchain.pem
      ## - /etc/letsencrypt/live/localhost/privkey.pem

## TLS configuration
define_macro:

  • ‘TLS_CIPHERS’: “HIGH:!aNULL:!eNULL:!3DES:@STRENGTH”*
  • ‘TLS_OPTIONS’:*
    • “no_sslv3”*
    • “no_tlsv1”*
    • “no_tlsv1_1”*
    • “cipher_server_preference”*
    • “no_compression”*
  • ‘DH_FILE’: “/path/to/dhparams.pem”*

  • generated with: openssl dhparam -out dhparams.pem 2048*

c2s_ciphers: ‘TLS_CIPHERS’
s2s_ciphers: ‘TLS_CIPHERS’
c2s_protocol_options: ‘TLS_OPTIONS’
s2s_protocol_options: ‘TLS_OPTIONS’
## c2s_dhfile: ‘DH_FILE’
## s2s_dhfile: ‘DH_FILE’

listen:

  • -*
  • port: 5222*
  • ip: “0.0.0.0”*
  • module: ejabberd_c2s*
  • max_stanza_size: 262144*
  • shaper: c2s_shaper*
  • access: c2s*
  • starttls_required: true*
  • #protocol_options: ‘TLS_OPTIONS’*
  • -*
  • port: 5223*
  • ip: “0.0.0.0”*
  • module: ejabberd_c2s*
  • max_stanza_size: 262144*
  • shaper: c2s_shaper*
  • access: c2s*
  • tls: false*
  • #protocol_options: ‘TLS_OPTIONS’*
  • -*
  • port: 5269*
  • ip: “::”*
  • module: ejabberd_s2s_in*
  • max_stanza_size: 524288*
  • -*
  • port: 5443*
  • ip: “::”*
  • module: ejabberd_http*
  • tls: false*
  • protocol_options: ‘TLS_OPTIONS’*
  • request_handlers:*
  •  /api: mod_http_api*
    
  •  /bosh: mod_bosh*
    
  •  /admin: ejabberd_web_admin*
    
  •  ## /captcha: ejabberd_captcha*
    
  •  ## /upload: mod_http_upload*
    
  •  /ws: ejabberd_http_ws*
    
  • -*
  • port: 5280*
  • ip: “::”*
  • module: ejabberd_http*
  • tls: false*
  • protocol_options: ‘TLS_OPTIONS’*
  • request_handlers:*
  •  /admin: ejabberd_web_admin*
    
  •  /.well-known/acme-challenge: ejabberd_acme*
    
  • -*
  • port: 1883*
  • ip: “::”*
  • module: mod_mqtt*
  • backlog: 1000*

## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text
## password storage (see auth_password_format option).
disable_sasl_mechanisms:

    • “digest-md5”*
    • “X-OAUTH2”*

s2s_use_starttls: required

## Store the plain passwords or hashed for SCRAM:
auth_password_format: scram

## Full path to a script that generates the image.
## captcha_cmd: “/usr/share/ejabberd/captcha.sh”

acl:

  • admin:*

  • user:*
    
  •   - "admin@cacti.fnlab.com"*
    
  •   - "admin1@cacti.fnlab.com"*
    
  •   - "admin"*
    
  •   - "admin1"*
    
  • local:*

  • user_regexp: “”*

  • loopback:*

  • ip:*

  •  - 127.0.0.0/8*
    
  •  - ::1/128*
    

access_rules:

  • local:*
  • allow: local*
  • c2s:*
  • deny: blocked*
  • allow: all*
  • 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: all*
  • c2s_shaper:*
  • none: admin*
  • normal: all*
  • s2s_shaper: fast*

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_delegation: {} # for xep0356*

  • mod_disco: {}*
  • mod_echo: {}*
  • 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*
  • access_mam:*
  •  - allow*
    
  • default_room_options:*
  •  mam: true*
    
  • mod_muc_admin: {}*
  • 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:*

  • access: local*

  • max_connections: 5*

  • mod_pubsub:*
  • access_createnode: pubsub_createnode*
  • plugins:*
  •  - flat*
    
  •  - pep*
    
  • force_node_config:*
  •  "eu.siacs.conversations.axolotl.*":*
    
  •    access_model: open*
    
  •  ## 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:*

  • ## GitHub - JabberSPAM/jabber-spam-fighting-manifesto: Manifesto for Public Jabber server operators fighting against spam*

  • ip_access: trusted_network*

  • mod_roster:*
  • versioning: true*
  • mod_s2s_dialback: {}*
  • mod_shared_roster: {}*
  • mod_sic: {}*
  • mod_stream_mgmt:*
  • resend_on_timeout: if_offline*
  • mod_vcard:*
  • search: false*
  • mod_vcard_xupdate: {}*
  • mod_version: {}*

### Local Variables:
### mode: yaml
### End:
### vim: set filetype=yaml tabstop=8
root@cacti:/etc/ejabberd#

GenieACS Side
root@genieacs2:~# cat /opt/genieacs/genieacs.env

GENIEACS_CWMP_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-cwmp-access.log

GENIEACS_NBI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-nbi-access.log

GENIEACS_FS_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-fs-access.log

GENIEACS_UI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-ui-access.log

GENIEACS_DEBUG_FILE=/var/log/genieacs/genieacs-debug.yaml

NODE_OPTIONS=–enable-source-maps

GENIEACS_EXT_DIR=/opt/genieacs/ext

GENIEACS_UI_JWT_SECRET=secret

GENIEACS_EXT_DIR=/opt/genieacs/ext

GENIEACS_UI_JWT_SECRET=secret

GENIEACS_XMPP_JID=acs@cacti.fnlab.com

GENIEACS_XMPP_PASSWORD=12345

root@genieacs2:~#

root@genieacs2:~# dig cacti.fnlab.com

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> cacti.fnlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13914
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;cacti.fnlab.com. IN A

;; ANSWER SECTION:
cacti.fnlab.com. 3600 IN A 192.168.200.52

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Dec 10 14:00:01 IST 2022
;; MSG SIZE rcvd: 60

root@genieacs2:~#

Rebuild with XMPP Brach

cd /opt/

mkdir XMPP

cd XMPP/

git clone GitHub - genieacs/genieacs: A fast and lightweight TR-069 Auto Configuration Server (ACS)

cd genieacs/

ls

git branch -a

git checkout -b remotes/origin/xmpp

npm install --unsafe-perm

npm run build

root@genieacs2:/opt/XMPP/genieacs# git status
On branch remotes/origin/xmpp
nothing to commit, working tree clean
root@genieacs2:/opt/XMPP/genieacs#
root@genieacs2:/opt/XMPP/genieacs# git branch -a
master

  • remotes/origin/xmpp
    remotes/origin/ChangeDUState
    remotes/origin/HEAD → origin/master
    remotes/origin/attributes
    remotes/origin/master
    remotes/origin/uploads
    remotes/origin/v1.0
    remotes/origin/v1.1
    remotes/origin/xmpp
    root@genieacs2:/opt/XMPP/genieacs#
    root@genieacs2:/opt/XMPP/genieacs/dist/bin# ls -ltr

total 952

-rwxr-xr-x 1 root root 414729 Dec 10 11:18 genieacs-cwmp

-rwxr-xr-x 1 root root 2902 Dec 10 11:18 genieacs-ext

-rwxr-xr-x 1 root root 188676 Dec 10 11:19 genieacs-nbi

-rwxr-xr-x 1 root root 48783 Dec 10 11:19 genieacs-fs

-rwxr-xr-x 1 root root 309621 Dec 10 11:19 genieacs-ui

root@genieacs2:/opt/XMPP/genieacs/dist/bin#

sudo systemctl edit --force --full genieacs-cwmp

[Unit]

Description=GenieACS CWMP

After=network.target

[Service]

User=genieacs

EnvironmentFile=/opt/genieacs/genieacs.env

#ExecStart=/usr/bin/genieacs-cwmp

ExecStart=/opt/XMPP/genieacs/dist/bin/genieacs-cwmp

[Install]

WantedBy=default.target

sudo systemctl edit --force --full genieacs-nbi

[Unit]

Description=GenieACS NBI

After=network.target

[Service]

User=genieacs

EnvironmentFile=/opt/genieacs/genieacs.env

#ExecStart=/usr/bin/genieacs-nbi

ExecStart=/opt/XMPP/genieacs/dist/bin/genieacs-nbi

[Install]

WantedBy=default.target

sudo systemctl edit --force --full genieacs-ui

[Unit]

Description=GenieACS UI

After=network.target

[Service]

User=genieacs

EnvironmentFile=/opt/genieacs/genieacs.env

#ExecStart=/usr/bin/genieacs-ui

ExecStart=/opt/XMPP/genieacs/dist/bin/genieacs-ui

[Install]

WantedBy=default.target

sudo systemctl edit --force --full genieacs-fs

[Unit]

Description=GenieACS FS

After=network.target

[Service]

User=genieacs

EnvironmentFile=/opt/genieacs/genieacs.env

#ExecStart=/usr/bin/genieacs-fs

ExecStart=/opt/XMPP/genieacs/dist/bin/genieacs-fs

[Install]

WantedBy=default.target

root@genieacs2:~# systemctl status genieacs-cwmp.service
● genieacs-cwmp.service - GenieACS CWMP
Loaded: loaded (/etc/systemd/system/genieacs-cwmp.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-12-10 11:50:55 IST; 1h 51min ago
Main PID: 57078 (node)
Tasks: 55 (limit: 4578)
Memory: 283.9M
CPU: 10.019s
CGroup: /system.slice/genieacs-cwmp.service
├─57078 node /opt/XMPP/genieacs/dist/bin/genieacs-cwmp
├─57124 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-cwmp
├─57125 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-cwmp
├─57126 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-cwmp
└─57127 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-cwmp

Dec 10 11:50:55 genieacs2 systemd[1]: Started GenieACS CWMP.
Dec 10 11:50:56 genieacs2 genieacs-cwmp[57078]: 2022-12-10T06:20:56.120Z [INFO] genieacs-cwmp starting; pid=57078 version=“1.2.9+20221>
Dec 10 11:50:56 genieacs2 genieacs-cwmp[57078]: 2022-12-10T06:20:56.511Z [INFO] Worker listening; pid=57125 address=”::" port=7547
Dec 10 11:50:56 genieacs2 genieacs-cwmp[57078]: 2022-12-10T06:20:56.593Z [INFO] Worker listening; pid=57124 address=“::” port=7547
Dec 10 11:50:56 genieacs2 genieacs-cwmp[57078]: 2022-12-10T06:20:56.611Z [INFO] Worker listening; pid=57126 address=“::” port=7547
Dec 10 11:50:56 genieacs2 genieacs-cwmp[57078]: 2022-12-10T06:20:56.640Z [INFO] Worker listening; pid=57127 address=“::” port=7547
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~# systemctl status genieacs-ui.service
● genieacs-ui.service - GenieACS UI
Loaded: loaded (/etc/systemd/system/genieacs-ui.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-12-10 11:50:57 IST; 1h 51min ago
Main PID: 57348 (node)
Tasks: 55 (limit: 4578)
Memory: 224.0M
CPU: 10.947s
CGroup: /system.slice/genieacs-ui.service
├─57348 node /opt/XMPP/genieacs/dist/bin/genieacs-ui
├─57367 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-ui
├─57368 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-ui
├─57369 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-ui
└─57375 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-ui

Dec 10 11:50:57 genieacs2 systemd[1]: Started GenieACS UI.
Dec 10 11:50:57 genieacs2 genieacs-ui[57348]: 2022-12-10T06:20:57.590Z [INFO] genieacs-ui starting; pid=57348 version=“1.2.9+202212100>
Dec 10 11:50:58 genieacs2 genieacs-ui[57348]: 2022-12-10T06:20:58.011Z [INFO] Worker listening; pid=57368 address=”::" port=3000
Dec 10 11:50:58 genieacs2 genieacs-ui[57348]: 2022-12-10T06:20:58.012Z [INFO] Worker listening; pid=57367 address=“::” port=3000
Dec 10 11:50:58 genieacs2 genieacs-ui[57348]: 2022-12-10T06:20:58.026Z [INFO] Worker listening; pid=57375 address=“::” port=3000
Dec 10 11:50:58 genieacs2 genieacs-ui[57348]: 2022-12-10T06:20:58.063Z [INFO] Worker listening; pid=57369 address=“::” port=3000
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~# systemctl status genieacs-nbi.service
● genieacs-nbi.service - GenieACS NBI
Loaded: loaded (/etc/systemd/system/genieacs-nbi.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-12-10 11:50:56 IST; 1h 51min ago
Main PID: 57160 (node)
Tasks: 55 (limit: 4578)
Memory: 156.2M
CPU: 5.212s
CGroup: /system.slice/genieacs-nbi.service
├─57160 node /opt/XMPP/genieacs/dist/bin/genieacs-nbi
├─57215 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-nbi
├─57217 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-nbi
├─57218 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-nbi
└─57219 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-nbi

Dec 10 11:50:56 genieacs2 systemd[1]: Started GenieACS NBI.
Dec 10 11:50:56 genieacs2 genieacs-nbi[57160]: 2022-12-10T06:20:56.604Z [INFO] genieacs-nbi starting; pid=57160 version=“1.2.9+2022121>
Dec 10 11:50:57 genieacs2 genieacs-nbi[57160]: 2022-12-10T06:20:57.021Z [INFO] Worker listening; pid=57217 address=”::" port=7557
Dec 10 11:50:57 genieacs2 genieacs-nbi[57160]: 2022-12-10T06:20:57.069Z [INFO] Worker listening; pid=57215 address=“::” port=7557
Dec 10 11:50:57 genieacs2 genieacs-nbi[57160]: 2022-12-10T06:20:57.137Z [INFO] Worker listening; pid=57218 address=“::” port=7557
Dec 10 11:50:57 genieacs2 genieacs-nbi[57160]: 2022-12-10T06:20:57.142Z [INFO] Worker listening; pid=57219 address=“::” port=7557
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~#
root@genieacs2:~# systemctl status genieacs-fs.service
● genieacs-fs.service - GenieACS FS
Loaded: loaded (/etc/systemd/system/genieacs-fs.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-12-10 11:50:56 IST; 1h 51min ago
Main PID: 57254 (node)
Tasks: 55 (limit: 4578)
Memory: 146.6M
CPU: 4.964s
CGroup: /system.slice/genieacs-fs.service
├─57254 node /opt/XMPP/genieacs/dist/bin/genieacs-fs
├─57308 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-fs
├─57309 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-fs
├─57312 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-fs
└─57313 /usr/bin/node /opt/XMPP/genieacs/dist/bin/genieacs-fs

Dec 10 11:50:56 genieacs2 systemd[1]: Started GenieACS FS.
Dec 10 11:50:57 genieacs2 genieacs-fs[57254]: 2022-12-10T06:20:57.105Z [INFO] genieacs-fs starting; pid=57254 version=“1.2.9+202212100>
Dec 10 11:50:57 genieacs2 genieacs-fs[57254]: 2022-12-10T06:20:57.492Z [INFO] Worker listening; pid=57312 address=”::" port=7567
Dec 10 11:50:57 genieacs2 genieacs-fs[57254]: 2022-12-10T06:20:57.524Z [INFO] Worker listening; pid=57313 address=“::” port=7567
Dec 10 11:50:57 genieacs2 genieacs-fs[57254]: 2022-12-10T06:20:57.554Z [INFO] Worker listening; pid=57308 address=“::” port=7567
Dec 10 11:50:57 genieacs2 genieacs-fs[57254]: 2022-12-10T06:20:57.580Z [INFO] Worker listening; pid=57309 address=“::” port=7567
root@genieacs2:~#

**GenieACS Preset and provision **

Genie Inform Provision
// Device ID as user name

const username = declare(“DeviceID.ID”, {value: 1}).value[0]

// Password will be fixed for a given device because Math.random() is seeded with device ID by default.

//const password = Math.trunc(Math.random() * Number.MAX_SAFE_INTEGER).toString(36);

const informInterval = 10800;

//const itms = “something” // declared the itms

// Refresh values daily

const daily = Date.now();

// Unique inform offset per device for better load distribution

const informTime = daily % 86400000;

declare(“InternetGatewayDevice.ManagementServer.ConnectionRequestUsername”, {value: daily}, {value: “something”});

declare(“InternetGatewayDevice.ManagementServer.ConnectionRequestPassword”, {value: daily}, {value: “password”});

declare(“InternetGatewayDevice.ManagementServer.PeriodicInformEnable”, {value: daily}, {value: true});

declare(“InternetGatewayDevice.ManagementServer.PeriodicInformInterval”, {value: daily}, {value: informInterval});

declare(“InternetGatewayDevice.XMPP.Connection.*.Enable”, {path: daily, value: daily}, {value: true});

declare(“InternetGatewayDevice.XMPP.Connection.*.Username”, {path: daily, value: daily}, {value: “cpe”});

declare(“InternetGatewayDevice.XMPP.Connection.*.Password”, {path: daily, value: daily}, {value: “12345”});

declare(“InternetGatewayDevice.XMPP.Connection.*.Resource”, {path: daily, value: daily}, {value: “cpe”});

declare(“InternetGatewayDevice.XMPP.Connection.*.Domain”, {path: daily, value: daily}, {value: “cacti.fnlab.com”});

declare(“InternetGatewayDevice.ManagementServer.ConnReqAllowedJabberIDs”, {path: daily, value: daily}, {value: “acs@cacti.fnlab.com”});

Home Gateway to XMPP using name

** CPE to XMPP using Name**

CPE WAN Info

ACS Summon Home Gateway

ACS Summon CPE