-
Posts
12 -
Joined
-
Last visited
Posts posted by potoelite
-
-
Thanks for your reply. That was my fault.
-
-
Thanks very much! It works!
-
I have revised the conf file, but when I start the echlon, there are still warning messages;
2022-08-19 16:09:31 INFO JID set to: echelon@ec2-54-174-96-13.compute-1.amazonaws.com/CC
2022-08-19 16:09:31 INFO EcheLOn started
/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py:72: SAWarning: relationship 'PlayerInfo.player' will copy column players.id to column players_info.player_id, which conflicts with relationship(s): 'Player.games' (copies players.id to players_info.player_id). If this is not the intention, consider if these relationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that foreign key constraints are partially overlapping, the orm.foreign() annotation can be used to isolate the columns that should be written towards. To silence this warning, add the parameter 'overlaps="games"' to the 'PlayerInfo.player' relationship. (Background on this error at: https://sqlalche.me/e/14/qzyx)
player = self.db.query(Player).filter(func.lower(Player.jid) == str(jid).lower()).first()
/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py:72: SAWarning: relationship 'Player.games_info' will copy column players.id to column players_info.player_id, which conflicts with relationship(s): 'Player.games' (copies players.id to players_info.player_id). If this is not the intention, consider if these relationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that foreign key constraints are partially overlapping, the orm.foreign() annotation can be used to isolate the columns that should be written towards. To silence this warning, add the parameter 'overlaps="games"' to the 'Player.games_info' relationship. (Background on this error at: https://sqlalche.me/e/14/qzyx)
player = self.db.query(Player).filter(func.lower(Player.jid) == str(jid).lower()).first()
/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py:72: SAWarning: relationship 'PlayerInfo.game' will copy column games.id to column players_info.game_id, which conflicts with relationship(s): 'Player.games' (copies games.id to players_info.game_id). If this is not the intention, consider if these relationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that foreign key constraints are partially overlapping, the orm.foreign() annotation can be used to isolate the columns that should be written towards. To silence this warning, add the parameter 'overlaps="games"' to the 'PlayerInfo.game' relationship. (Background on this error at: https://sqlalche.me/e/14/qzyx)
player = self.db.query(Player).filter(func.lower(Player.jid) == str(jid).lower()).first()
/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py:72: SAWarning: relationship 'Game.player_info' will copy column games.id to column players_info.game_id, which conflicts with relationship(s): 'Player.games' (copies games.id to players_info.game_id). If this is not the intention, consider if these relationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that foreign key constraints are partially overlapping, the orm.foreign() annotation can be used to isolate the columns that should be written towards. To silence this warning, add the parameter 'overlaps="games"' to the 'Game.player_info' relationship. (Background on this error at: https://sqlalche.me/e/14/qzyx)
player = self.db.query(Player).filter(func.lower(Player.jid) == str(jid).lower()).first()
/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py:72: SAWarning: relationship 'Game.players' will copy column games.id to column players_info.game_id, which conflicts with relationship(s): 'Game.player_info' (copies games.id to players_info.game_id), 'Player.games' (copies games.id to players_info.game_id), 'PlayerInfo.game' (copies games.id to players_info.game_id). If this is not the intention, consider if these relationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that foreign key constraints are partially overlapping, the orm.foreign() annotation can be used to isolate the columns that should be written towards. To silence this warning, add the parameter 'overlaps="game,games,player_info"' to the 'Game.players' relationship. (Background on this error at: https://sqlalche.me/e/14/qzyx)
player = self.db.query(Player).filter(func.lower(Player.jid) == str(jid).lower()).first()
/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py:72: SAWarning: relationship 'Game.players' will copy column players.id to column players_info.player_id, which conflicts with relationship(s): 'Player.games' (copies players.id to players_info.player_id), 'Player.games_info' (copies players.id to players_info.player_id), 'PlayerInfo.player' (copies players.id to players_info.player_id). If this is not the intention, consider if these relationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that foreign key constraints are partially overlapping, the orm.foreign() annotation can be used to isolate the columns that should be written towards. To silence this warning, add the parameter 'overlaps="games,games_info,player"' to the 'Game.players' relationship. (Background on this error at: https://sqlalche.me/e/14/qzyx)
player = self.db.query(Player).filter(func.lower(Player.jid) == str(jid).lower()).first()
-
This is my config file.
listen:
-
port: 5222
ip: "0.0.0.0"
module: ejabberd_c2s
max_stanza_size: 1048576
shaper: c2s_shaper
access: c2s
starttls_required: false
-
port: 5223
ip: "::"
tls: true
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
-
port: 5280
ip: "::"
module: ejabberd_http
request_handlers:
/admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme
-
port: 3478
ip: "0.0.0.0"
transport: udp
module: ejabberd_stun
# use_turn: true
## The server's public IPv4 address:
# turn_ipv4_address: "54.174.96.13"
## The server's public IPv6 address:
# turn_ipv6_address: "2001:db8::3"
-
port: 1883
ip: "::"
module: mod_mqtt
backlog: 1000s2s_use_starttls: optional
acl:
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
admin:
user: admin@ec2-54-174-96-13.compute-1.amazonaws.com
validname:
user_regexp: "^[0-9A-Za-z._-]{1,20}$"
bots:
user: xpartamupp@ec2-54-174-96-13.compute-1.amazonaws.com
user: echelon@ec2-54-174-96-13.compute-1.amazonaws.com
access_rules:
local:
allow: local
c2s:
deny: blocked
allow: all
announce:
allow: admin
configure:
allow: admin
muc_create:
allow: local
muc_admin:
allow: admin, bots
ipbots:
allow: bots
pubsub_createnode:
allow: bots
trusted_network:
allow: loopback
register:
allow: validnameapi_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_numberregistration_timeout: 3600
shaper:
normal:
rate: 3000
burst_size: 20000
fast: 100000shaper_rules:
max_user_sessions: 10
max_user_offline_messages:
5000: admin
100: all
c2s_shaper:
none: admin, bots
normal: all
s2s_shaper: fastmodules:
mod_ipstamp: {}
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
custom_headers:
"Access-Control-Allow-Origin": "https://@HOST@"
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
"Access-Control-Allow-Headers": "Content-Type"
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_log:
outdir: "/lobby/logs"
file_format: plaintext
timezone: universal
mod_muc:
access:
- allow
access_admin: muc_admin
access_create: muc_admin
access_persistent: muc_admin
access_mam:
- allow
max_users: 5000
default_room_options:
mam: true
max_users: 1000
logging: true
persistent: true
allow_change_subj: false
anonymous: false
mod_muc_admin: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping:
send_pings: true
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
access: register
mod_roster:
versioning: true
mod_s2s_dialback: {}
# mod_shared_roster: {}
mod_stream_mgmt:
resend_on_timeout: if_offline
mod_stun_disco: {}
mod_vcard: {}
mod_vcard_xupdate: {}
mod_version:
show_os: false### Local Variables:
### mode: yaml
### End:
### vim: set filetype=yaml tabstop=8
-
Hi, thanks again for your help.
Now I can do hosting & joining games, and chat with other players.
But, there are still not working issue.
Leaderboard and profile lookup don't work for now.
I found that rating bot uses sql database, unlike you said before.
According to the installation guide, I have created new sql db file called lobby_rankings.sqlite3 by running command python3 lobby_ranking.py create.
But when I run the echelon.py, bunch of sql db errors appear.
For example, when I search player on proflie lookup, then following error is shown.
KeyError: 'rating'
2022-08-19 14:20:07 ERROR Failed to send profile about to
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py", line 625, in _iq_profile_handler
self._send_profile(iq, iq['profile']['command'])
File "/usr/local/lib/python3.7/site-packages/XpartaMuPP-0.24-py3.7.egg/xpartamupp/echelon.py", line 733, in _send_profile
stanza.add_item(player_nick, stats['rating'], stats['highestRating'],Could you please explain how to fix this?
-
Hi @Dunedanthanks for your help! Now I can connect with my account into multiplayer lobby, but I have one more problem.
When Im going to host new game, it fails with the error dialog saying "Cannot host game.. Failed to host via STUN".
But when I disable the checkbox "Use STUN to work around firewalls", it works.
So i guess the reason is because of STUN configuration in ejabberd, but I'm not sure which one needs to be modified.
This is STUN related setting in ejabberd config file.
port: 3478
ip: "0.0.0.0
transport: udp
module: ejabberd_stun
use_turn: true
turn_ipv4_address: "x.x.x.x
Thanks for your advices.
-
3 hours ago, potoelite said:
In existing 0 A.D game's multiplayer lobby, it sends response after the player connected to lobby.
{"time": 166032701, "historic": false "level": "connected", "type": "system"}
{"time": 166032702, "historic": false "level": "subject", "type": "chat", "nick": "user1", "subject": "This is the svn multiplayer lobby,\n\n If you want to play..."}
{"time": 166032702, "historic": false "level": "gamelist", "type": "game"}
I just tried to print response messages when new ones arrived from lobby server.
Above statements are arrived when the game uses current 0A.D's multiplayer lobby.
But after I have replaced it with my own server, nothing arrives.
Also I'm wondering about who sends this message to the game client.
Because I can't find any string resource like "This is the svn multiplayer lobby,\n\n If you want to play..." anywhere. There aren't any such string in source code of the game and multiplayer lobby.
-
27 minutes ago, Dunedan said:
At that point the bots play no role yet, so you can ignore everything related to the bots
So this means that hosting/joining game is impossible even after all is configured well?
28 minutes ago, Dunedan said:To help you further we'd need some more information, like the 0ad configuration options you used, screenshots of the problem and a debug log from ejabberd.
Thanks, let me share my configuration information.
First, following is my default.cfg lobby settings[lobby]history = 0 ; Number of past messages to display on joinroom = "arena" ; Default MUC room to joinserver = "ec2-54-174-96-13.compute-1.amazonaws.com" ; Address of lobby servertls = false ; Whether to use TLS encryption when connecting to the server.verify_certificate = false ; Whether to reject connecting to the lobby if the TLS certificate is invalid (TODO: wait for Gloox GnuTLS trust implementation to be fixed)terms_url = "https://dummpy.com"; Allows the user to save the text and print the termsterms_of_service = "1" ; Version (hash) of the Terms of Service that the user has acceptedterms_of_use = "1" ; Version (hash) of the Terms of Use that the user has acceptedprivacy_policy = "1" ; Version (hash) of the Privacy Policy that the user has acceptedxpartamupp = "xpartamupp" ; Name of the server-side XMPP-account that manage gamesechelon = "echelon" ; Name of the server-side XMPP-account that manages ratingsbuddies = "," ; Comma separated list of playernames that the current user has marked as buddiesrememberpassword = true ; Whether to store the encrypted password in the user config[lobby.columns]gamerating = false ; Show the average rating of the participating players in a column of the gamelist[lobby.stun]enabled = true ; The STUN protocol allows hosting games without configuring the firewall and router.; If STUN is disabled, the game relies on direct connection, UPnP and port forwarding.server = "ec2-54-174-96-13.compute-1.amazonaws.com" ; Address of the STUN server.port = 3478 ; Port of the STUN server.delay = 200 ; Duration in milliseconds that is waited between STUN messages.; Smaller numbers speed up joins but also become less stable.I have configured ejabberd on aws ec2 instance.
As I said, I can register new account in game and after I try to connect, the game keep says "connecting...", but ejabbered log and web admin says the account is connected and online.
This is ejabberd log statements, I disabled TLS in authetication.
2022-08-13 16:30:06.144478+00:00 [info] <0.777.0>@ejabberd_listener:accept/7:273 (<0.4170.0>) Accepted connection 188.43.235.177:17278 -> 172.31.28.90:5222
2022-08-13 16:30:06.669178+00:00 [info] <0.4170.0>@ejabberd_c2s:process_auth_result/3:268 (tcp|<0.4170.0>) Accepted c2s SCRAM-SHA-1 authentication for qwe@ec2-54-174-96-13.compute-1.amazonaws.com by mnesia backend from 188.43.235.177
2022-08-13 16:30:07.161255+00:00 [info] <0.4170.0>@ejabberd_c2s:bind/2:446 (tcp|<0.4170.0>) Opened c2s session for qwe@ec2-54-174-96-13.compute-1.amazonaws.com/0ad-2CA544C06C093BEEAbove is what ejabberd admin page shows in users panel.
By using other XMPP client like Pidgin, I can create account and login, chat there.
But as the game uses encrypted password by itself, so I can't use the account create by game in other xmpp client as password is regarded incorrect.
-
Hi, thanks for your reply.
But I don't think this is because of UI. Its due to multiplayer lobby configuration I think.
If you have completed guide to configure multiplayer lobby, please let me take a look at it.
As I wrote above, something is missing so far, I can't go forward anymore.
-
Hi, hope you are doing well.
I've been trying to configure multiplayer lobby on my server, but I have some problems.
According to the guide of installation of lobby bots here, I've configured ejabberd 22.05(latest) and executed xpartamupp.py and echelon.py scripts.
And I've replaced original lobby options such as room name, lobby url, etc according to new lobby server.
At this point, I have following problems.
- I can register new account to multiplayer lobby, so I can confirm this in ejabberd admin page also. But I can't login with created account in the game.
Login dialog keeps saying "connecting..." after the connection is established. Why I think like this is because the account which I used is displayed as online status in ejabberd web admin, but not in the game. In ejabberd log, it also says new connection is opened.
- Server returns nothing response.
In existing 0 A.D game's multiplayer lobby, it sends response after the player connected to lobby.
{"time": 166032701, "historic": false "level": "connected", "type": "system"}
{"time": 166032702, "historic": false "level": "subject", "type": "chat", "nick": "user1", "subject": "This is the svn multiplayer lobby,\n\n If you want to play..."}
{"time": 166032702, "historic": false "level": "gamelist", "type": "game"}
But my server doesn't. It only sens response when the username and password are incorrect or unregister account is used.
I guess there is one more component to be installed for proper work of multiplayer lobby on my side.
There isn't any postgresql db handler on my model and both source code of game and multiplayer lobby-bots don't contain any one of above strings.
Also, the weird thing is that github repo name is just "lobby-bots", not "lobby", which means entire name of system
Please let me know how to fix this issue.
Thanks in advance for your help!
- 1
Game crashes while it is playing
in Gameplay Discussion
Posted
Accidentally, I found this build on youtube, try to play game, but not available