[07:24:25]
<Echo1> maranda committed --
mod_muc: add debug logging statement.
-> https://github.com/maranda/metronome/commit/1a304f5b352f984e8222126fe953f23d9a89d260
[08:11:09]
<xma> hello
[08:11:14]
<xma> maranda
[08:11:16]
<xma> ?
[08:12:57]
<xma> default component port is 5347 according to mod_component.lua and even if it is started successfully, here, I do not see an open port for 5347, is it normal ?
[08:13:11]
<xma> (metronome 3.11)
[08:14:38]
<Maranda> xma, is the component connecting?
[08:15:22]
<Maranda> also a sec need to restart to test some muc serialization stuff.
[08:15:38]
<xma> I am trying to connect to my server with host=127.0.0.1 and port=5347 but it fails
[08:16:00]
<xma> hum it does not connect at all as if it could not find the port
[08:16:26]
<Maranda> what's in the config? it looks like mod_component isn't loaded
[08:19:57]
<xma> Feb 24 08:47:37 portmanager debug Added listening service component to [*]:5347
Feb 24 08:47:37 portmanager info Activated service 'component'
[08:20:13]
<xma> it is, isn't it ?
[08:21:34]
<xma> hum, maybe you are right
[08:21:44]
<xma> I just restarted it to see and I do not see it starting
[08:22:05]
<xma> check the conf
[08:24:54]
<Maranda> hmm
[08:27:12]
<xma> there is something wrong with my components at some point I guess
[08:27:25]
<Maranda> hmm
[08:27:38]
<Maranda> well that I can't be sure for me it just works correctly
[08:30:38]
<Maranda> Okay and now room occupant list preservation on restarts works.
[08:30:45]
*Maranda did it twice
[08:34:22]
*** Maranda changed the title to "Metronome IM "cook" book room | Support and Dev talk about the Metronome XMPP server.
Latest stable version build is: 3.11.7
For more information you can visit: https://metronome.im
Room logs can be found here: https://muc.metronome.im/logs/grimoire/
* Links *
<==========================================================>
- Building & Installation:
https://metronome.im/building
- Documentation:
https://metronome.im/documentation
- Issues Tracker:
https://github.com/maranda/metronome/issues
<==========================================================>"
[08:44:53]
<xma> is there a way to check for configuration errors ?
[08:50:10]
<Maranda> logs could/should output eventual errors, or just paste snippets without sensible data here
[08:55:28]
<xma> which snippet ?
[08:55:36]
<xma> I can't see what is wrong
[08:56:45]
<xma> one thing: should I use space or tabs in the config file ?
[09:01:01]
<Maranda> xma, yes you can, and the snippet regarding the said component configuration
[09:01:44]
<Maranda> because again for me it works, I don't see why it shouldn't for you 🤔
[09:02:14]
<xma> ok
[09:02:22]
<xma> let's paste some cfg
[09:03:28]
<xma> https://maillard.im/zerobin/?ac756f87201c33ed#56KNviB+YiFUEFYS663psqsq39+6C2BzAB7rFqcKT1U=
[09:03:37]
<xma> this is my virtualhost cfg
[09:04:31]
<xma> https://maillard.im/zerobin/?2180e26a9e116db8#A4g0z6mWEdOPggQ6tocsqGgw2KFpRpxWpraXwigLykE=
[09:05:01]
<Maranda> it asks for username and password
[09:05:01]
<xma> my global cfg
[09:05:08]
<xma> ?
[09:05:13]
<xma> hum sorry
[09:05:28]
<Maranda> ^^
[09:05:59]
<Maranda> if you just paste it in the room it'll be auto-binned by the way
[09:09:04]
<xma> ah ?
[09:09:37]
<xma> -- ** Metronome's config file example **
--
-- The format is exactly equal to Prosody's:
--
-- Lists are written { "like", "this", "one" }
-- Lists can also be of { 1, 2, 3 } numbers, etc.
-- Either commas, or semi-colons; may be used as seperators.
--
-- A table is a list of values, except each value has a name. An
-- example would be:
--
-- ssl = { key = "keyfile.key", certificate = "certificate.cert" }
--
-- Tip: You can check that the syntax of this file is correct when you have finished
-- by running: luac -p metronome.cfg.lua
-- If there are any errors, it will let you know what and where they are, otherwise it
-- will keep quiet.
-- Global settings go in this section
-- local domain = os.getenv("DOMAIN") or "maillard.im"
-- admins = { }
-- This is the list of modules Metronome will load on startup.
-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
modules_enabled = {
-- Generally required
"roster"; -- Allow users to have a roster. Recommended.
"saslauth"; -- Authentication for clients. Recommended if you want to log in.
"tls"; -- Add support for secure TLS on c2s/s2s connections
"disco"; -- Service discovery
-- Not essential, but recommended
"private"; -- Private XML storage (for room bookmarks, etc.)
"vcard"; -- Allow users to set vCards
-- "pep"; -- Allows setting of mood, tune, etc.
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
"bidi"; -- Enables Bidirectional Server-to-Server Streams.
"delegation"; -- Allows features handling by entity/component
"privilege";
-- Nice to have
"version"; -- Replies to server version requests
"uptime"; -- Report how long server has been running
"time"; -- Let others know the time here on this server
"ping"; -- Replies to XMPP pings with pongs
"register"; -- Allow users to register on this server using a client and change passwords
"stream_management"; -- Allows clients and servers to use Stream Management
"stanza_optimizations"; -- Allows clients to use Client State Indication and SIFT
"message_carbons"; -- Allows clients to enable carbon copies of messages
"mam"; -- Enable server-side message archives using Message Archive Management
"push"; -- Enable Push Notifications via PubSub using XEP-0357
"lastactivity"; -- Enables clients to know the last presence status of an user
"adhoc_cm"; -- Allow to set client certificates to login through SASL External via adhoc
"admin_adhoc"; -- administration adhoc commands
"bookmarks"; -- XEP-0048 Bookmarks synchronization between PEP and Private Storage
"sec_labels"; -- Allows to use a simplified version XEP-0258 Security Labels and related ACDFs.
"privacy"; -- Add privacy lists and simple blocking command support
-- Other specific functionality
--"admin_telnet"; -- administration console, telnet to port 5582
--"admin_web"; -- administration web interface
"bosh"; -- Enable support for BOSH clients, aka "XMPP over Bidirectional Streams over Synchronous HTTP"
--"compression"; -- Allow clients to enable Stream Compression
--"spim_block"; -- Require authorization via OOB form for messages from non-contacts and block unsollicited messages
--"gate_guard"; -- Enable config-based blacklisting and hit-based auto-banning features
--"incidents_handling"; -- Enable Incidents Handling support (can be administered via adhoc commands)
--"server_presence"; -- Enables Server Buddies extension support
--"service_directory"; -- Enables Service Directories extension support
--"public_service"; -- Enables Server vCard support for public services in directories and advertises in features
--"register_api"; -- Provides secure API for both Out-Of-Band and In-Band registration for E-Mail verification
"websocket"; -- Enable support for WebSocket clients, aka "XMPP over WebSockets"
};
-- Server PID
pidfile = "/var/run/metronome/metronome.pid"
ssl = { key = "/etc/yunohost/certs/maillard.im/key.pem",certificate = "/etc/yunohost/certs/maillard.im/crt.pem" }
-- HTTP server
Host "*"
interfaces = { "*" }
ssl = { key = "/etc/yunohost/certs/upload.maillard.im/key.pem",certificate = "/etc/yunohost/certs/upload.maillard.im/crt.pem" }
http_ports = {}
https_ports = { 5290 }
-- Enable IPv6
use_ipv6 = true
-- Discovery items
disco_items = {
{ "muc.maillard.im" },
{ "pubsub.maillard.im" },
{ "upload.maillard.im" },
{ "vjud.maillard.im" }
};
-- BOSH configuration (mod_bosh)
consider_bosh_secure = true
cross_domain_bosh = true
-- WebSocket configuration (mod_websocket)
consider_websocket_secure = true
cross_domain_websocket = true
-- Disable account creation by default, for security
allow_registration = false
-- Use LDAP storage backend for all stores
storage = "ldap"
-- Logging configuration
log = {
info = "/var/log/metronome/metronome.log"; -- Change 'info' to 'debug' for verbose logging
debug = "/var/log/metronome/metronome.dev";
error = "/var/log/metronome/metronome.err";
-- "*syslog"; -- Uncomment this for logging to syslog
-- "*console"; -- Log to the console, useful for debugging with daemonize=false
}
------ Components ------
-- You can specify components to add hosts that provide special services,
-- like multi-user conferences, and transports.
---Set up a local BOSH service
Component "localhost" "http"
modules_enabled = { "bosh" }
---Set up a MUC (multi-user chat) room server
Component "muc.maillard.im" "muc"
name = "maillard.im Chatrooms"
modules_enabled = {
"muc_limits";
"muc_log";
"muc_log_mam";
"muc_log_http";
"muc_vcard";
}
muc_event_rate = 0.5
muc_burst_factor = 10
---Set up a PubSub server
--Component ("pubsub."..domain) "pubsub"
-- name = (domain.." Publish/Subscribe")
-- unrestricted_node_creation = true -- Anyone can create a PubSub node (from any server)
---Set up a HTTP Upload service
Component "upload.maillard.im" "http_upload"
name = "maillard.im Sharing Service"
http_file_size_limit = 6*1024*1024
http_file_quota = 60*1024*1024
---Set up a VJUD service
Component "vjud.maillard.im" "vjud"
ud_disco_name = "maillard.im User Directory"
----------- Virtual hosts -----------
-- You need to add a VirtualHost entry for each domain you wish Metronome to serve.
-- Settings under each VirtualHost entry apply *only* to that host.
Include "conf.d/*.cfg.lua"
[09:10:08]
<xma> oh this is really nice !
[09:10:23]
<xma> my vhost:
[09:10:54]
<xma> local domain = "maillard.im"
VirtualHost "maillard.im"
ssl = {
key = "/etc/yunohost/certs/maillard.im/key.pem";
certificate = "/etc/yunohost/certs/maillard.im/crt.pem";
}
authentication = "ldap2"
ldap = {
hostname = "localhost",
user = {
basedn = "ou=users,dc=yunohost,dc=org",
filter = "(&(objectClass=posixAccount)(mail=*@maillard.im))",
usernamefield = "mail",
namefield = "cn",
},
}
privileged_entities = {
["pubsub."..domain] = {
roster = "get";
message = "outgoing";
presence = "roster";
},
}
delegations = {
["urn:xmpp:mam:1"] = {
filtering = {"node"};
jid = "pubsub."..domain;
},
["http://jabber.org/protocol/pubsub"] = {
jid = "pubsub."..domain;
},
["http://jabber.org/protocol/pubsub#owner"] = {
jid = "pubsub."..domain;
},
["https://salut-a-toi/protocol/schema:0"] = {
jid = "pubsub."..domain;
},
["http://jabber.org/protocol/disco#items:*"] = {
jid = "pubsub."..domain;
},
}
Component "pubsub.maillard.im" "pubsub"
-- component_secret = "plop"
modules_enabled = { "delegation"; "privilege" }
[09:11:48]
<Maranda> xma, pubsub.maillard.im isn't configured as an external component
[09:12:14]
<Maranda> you just configured it as a pubsub internal component
[09:12:43]
<xma> ok need to check the documentation then
[09:13:28]
<Maranda> Component "pubsub.maillard.im"
[09:13:40]
<Maranda> is all you need to load it as an external component
[09:14:28]
<xma> where can I put the shared secret ?
[09:14:29]
<Maranda> if you add the third parameter, it'll replace mod_component with whatever module is specified in there
[09:14:37]
<Maranda> just where you did
[09:14:43]
<Maranda> uncommented
[09:14:56]
<xma> ah ok got it
[09:18:32]
<xma> Great that works !!
[09:19:58]
<Maranda> 😸
[09:20:08]
<xma> you saved my day dude ! Thanks a lot for your help and thank you for the comit on mod_component.lua
[09:20:46]
<massimiliano> https://disroot.org/upload/ce62b12e-bae2-464a-b212-cd08a5d20928/Schermata%20del%202019-02-24%2010-19-55.png
[09:20:52]
<xma> at least, I won't need to switch over to prosody :)
[09:20:58]
<massimiliano> Maranda, it didn't crate bin here
[09:21:41]
<xma> crate ?
[09:22:25]
<massimiliano> *create
[09:23:31]
<testor> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum libero eget arcu mattis tristique. Etiam eu eros sed nunc iaculis tincidunt. Donec accumsan mauris et eros dignissim tempor. Aliquam a purus et nibh tincidunt lacinia. Donec faucibus lacus at dapibus dapibus. Nunc dignissim molestie nunc vitae facilisis. Aenean facilisis, ligula ac ornare accumsan, felis velit dapibus eros, ut faucibus ex diam eget risus. Suspendisse quis placerat mauris, vel euismod velit. Morbi at nunc consectetur, sollicitudin urna nec, gravida lorem. Pellentesque sodales auctor augue a lacinia. Duis nec est quis purus egestas euismod nec quis nulla. Donec non felis vel magna aliquam fringilla. Pellentesque aliquet pretium metus, luctus aliquet diam consectetur sit amet. Pellentesque neque augue, interdum sed dui eu, eleifend semper orci. Nulla luctus viverra sapien viverra posuere.
Nunc et ligula mauris. Suspendisse ornare sodales neque ac lacinia. Etiam porttitor eu quam vel tempus. Etiam tempus malesuada dictum. Nullam purus diam, efficitur ac dolor at, faucibus scelerisque diam. Curabitur sed lectus non nibh sodales sagittis in scelerisque magna. In lacinia tellus ac eleifend interdum.
Curabitur consectetur mi dolor, eget eleifend enim vestibulum aliquam. Duis vestibulum enim eu eros fermentum, sed tristique tellus semper. Aliquam gravida ipsum ac placerat sodales. Suspendisse bibendum in nisl quis congue. Nam vitae dolor at elit interdum vestibulum ac vitae velit. In facilisis ex in nisl blandit volutpat. Maecenas feugiat ante ut orci imperdiet, a consequat lectus consectetur. Vestibulum nec libero mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin laoreet lorem id nibh ullamcorper, ut accumsan nisl tincidunt.
Vivamus vestibulum ultrices consequat. Donec at nulla ut leo faucibus ultrices nec vitae enim. In aliquet mattis eros, id faucibus ante tristique dapibus. Praesent non vestibulum nisl, eu malesuada mauris. Pellentesque congue elit urna, ut accumsan lectus fermentum ac. Fusce quis euismod nibh, vel egestas justo. Sed sagittis sed ante id molestie. Curabitur eleifend hendrerit cursus. Etiam sollicitudin dictum aliquam. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Integer sit amet velit orci. In arcu mi, porta vel augue ut, vestibulum consectetur enim. In hac habitasse platea dictumst. Sed nisi libero, porttitor nec ex quis, dignissim commodo nulla. Phasellus ut semper mauris. Fusce non ex varius, sagittis nibh et, bibendum velit. Nullam urna risus, tincidunt quis tristique at, rhoncus faucibus sapien. Donec sit amet ex et nunc posuere porttitor et sit amet turpis. Sed sit amet cursus arcu, vel aliquet dui. Fusce aliquet at tellus ut lobortis. Nullam imperdiet diam at consequat vestibulum.
[09:23:59]
<Maranda> issue on your end massimiliano
[09:24:11]
<massimiliano> no it is a pastebin
[09:24:14]
<massimiliano> now
[09:24:21]
<xma> Maranda: do you intend to integrate XEP-0355 and XEP-0356 into metronome too ? :)
[09:24:42]
<massimiliano> https://disroot.org/upload/2bfd474c-ae37-4300-8595-dcdc04237793/Schermata%20del%202019-02-24%2010-24-35.png
[09:24:47]
<Maranda> not sure yet
[09:24:51]
<xma> ok
[09:25:09]
<xma> you got the code inside the issue tracker anyway
[09:25:30]
<Maranda> again, what happened previously is a quirk on your end (the client)
[09:25:42]
<Maranda> we all seen it pastebinned
[09:25:50]
<xma> let's go get some coffee !
[09:26:09]
<massimiliano> Maranda, okay no problem then :-)
[09:49:46]
<Maranda> need yunohost to move to 3.11.7
[09:49:53]
<Maranda> whenever they fix that issue
[12:48:57]
<Maranda> xma, I usually verify everything before I backport it from Prosody modules, and eventually end rewriting it mostly.
[12:50:46]
<Maranda> stuff in there tends not meeting my standards and every module is included and shipped with Metronome opposed to Prosody.
[13:25:43]
<xma> ok, fine with me. This module has not been written by a prosody's folk though
[14:05:34]
<Maranda> it's not a matter of who wrote it
[16:27:21]
<xma> hello again
[16:27:39]
<xma> what's the equivalent of prosody module:uhook in metronme ?
[16:27:59]
<xma> module:unhook("iq-result/host/"..stanza.attr.id, managing_ent_result)
[16:28:21]
<xma> for example should be converted but what's the correct form ?
[18:11:37]
<Maranda> module:unhook_object_event((hosts[module.host] or metronome).events, "iq-result/host/"..stanza.attr.id, managing_ent_result);
[18:13:49]
<Maranda> xma, if you want to hook for a specific iq reply don't do it like that
[18:14:43]
<xma> this is how I did it by adding a new function unhook that just acts like your code
[18:15:04]
<xma> what is the correct way of doing it otherwise ?
[18:18:26]
<Maranda> You just add a permanent handler and save the id to treat in a weak table, that's much cleaner that way imho
[18:18:29]
<Maranda> https://github.com/maranda/metronome/blob/master/plugins/mod_push.lua#L229
[18:18:38]
<Maranda> have a look at mod_push for an example.
[18:19:29]
<xma> ok let's check that
[18:20:41]
<Maranda> else you'll keep to shuffle the event map over and over, as when an entry is removed or added it'll need to be reordered.
[18:41:52]
<Maranda> and actually I think i'll just change that in another way
[19:30:33]
<Maranda> xma, how many ported/custom modules you're using just hook to iq-result events?
[19:31:26]
<Maranda> I'm about to make a change that may require changes/break backport compatibility
[19:35:37]
<xma> 1 and only 1
[19:35:41]
<xma> mod_delegation
[20:00:39]
<Maranda> And the change is necessary because of some possible id spoofing I just figured.
[20:57:45]
<Maranda> @version metronome.im
[20:57:45]
<Echo1> Maranda: metronome.im is running Metronome version 3.11.8 on Daystrom Quadra Mk IX
[22:55:09]
<Echo1> maranda committed --
mod_pep: properly fix #464.
-> https://github.com/maranda/metronome/commit/be3198f0b9b2fe533156d94aa5bf2fbf4e8e8d1b
[22:56:10]
*** Maranda changed the title to "Metronome IM "cook" book room | Support and Dev talk about the Metronome XMPP server.
Latest stable version build is: 3.11.8
For more information you can visit: https://metronome.im
Room logs can be found here: https://muc.metronome.im/logs/grimoire/
* Links *
<==========================================================>
- Building & Installation:
https://metronome.im/building
- Documentation:
https://metronome.im/documentation
- Issues Tracker:
https://github.com/maranda/metronome/issues
<==========================================================>"
[23:17:28]
<Maranda> .