mirror of
https://github.com/CFC-Servers/cfc_chat_transit.git
synced 2025-03-04 03:03:05 -05:00
Add default image
This commit is contained in:
parent
4f6580607b
commit
1c22c18ab8
@ -1,7 +1,6 @@
|
||||
require "steamlookup"
|
||||
|
||||
include "cfc_chat_transit/server/init.lua"
|
||||
include "cfc_chat_transit/server/avatar_service.lua"
|
||||
include "cfc_chat_transit/server/remote_messages.lua"
|
||||
|
||||
AddCSLuaFile "cfc_chat_transit/client/init.lua"
|
||||
|
@ -8,11 +8,17 @@ class AvatarService
|
||||
@logger = logger\scope "AvatarService"
|
||||
@outlinerUrl = "http://#{avatarServiceAddress\GetString!}/outline"
|
||||
|
||||
processAvatar: (avatarUrl, outlineColor, success, failed) =>
|
||||
body = TableToJSON { :avatarUrl, :outlineColor }
|
||||
getAvatar: (steamID64) =>
|
||||
steamID64 and "https://avatarservice.cfcservers.org/avatars/#{steamID64}.png" or nil
|
||||
|
||||
processAvatar: (avatarUrl, outlineColor, steamID) =>
|
||||
body = TableToJSON { :avatarUrl, :outlineColor, :steamID }
|
||||
@logger\debug "Sending data to outliner: ", body
|
||||
|
||||
failed = @logger\error
|
||||
success = (code, body) ->
|
||||
@logger\debug "Avatar request succeeded with code: #{code} | Body: #{body}"
|
||||
|
||||
HTTP
|
||||
:success
|
||||
:failed
|
||||
@ -21,24 +27,13 @@ class AvatarService
|
||||
method: "POST"
|
||||
type: "application/json"
|
||||
|
||||
setOutlinedAvatar: (ply, avatarUrl) =>
|
||||
data = ply.SteamLookup.PlayerSummary.response.players[1]
|
||||
|
||||
data.originalAvatarFull or= data.avatarfull
|
||||
data.avatarfull = avatarUrl
|
||||
|
||||
outlineAvatar: (ply, data) =>
|
||||
@logger\debug "Received request to outline avatar for ply: #{ply\Nick!}"
|
||||
avatar = data.response.players[1].avatarfull
|
||||
outlineColor = ChatTransit\GetTeamColor ply\Team!
|
||||
steamID = ply\SteamID64!
|
||||
|
||||
success = (code, body) ->
|
||||
@logger\debug "Avatar request succeeded with code: #{code} | Body: #{body}"
|
||||
@setOutlinedAvatar ply, body
|
||||
|
||||
failed = (err) -> @logger\error err
|
||||
|
||||
@processAvatar avatar, outlineColor, success, failed
|
||||
@processAvatar avatar, outlineColor, steamID
|
||||
|
||||
ChatTransit.AvatarService = AvatarService ChatTransit.Logger
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
require "gwsockets"
|
||||
require "logger"
|
||||
|
||||
export ChatTransit = { Logger: Logger "ChatTransit" }
|
||||
include "cfc_chat_transit/server/avatar_service.lua"
|
||||
|
||||
import Read from file
|
||||
import GetColor from team
|
||||
import TableToJSON from util
|
||||
export ChatTransit = {
|
||||
Logger: Logger "ChatTransit"
|
||||
}
|
||||
import getAvatar from ChatTransit.AvatarService
|
||||
|
||||
logger = ChatTransit.Logger
|
||||
relayPort = CreateConVar "cfc_relay_port", "", FCVAR_NONE
|
||||
@ -41,7 +42,9 @@ hook.Add "Think", loadHook, ->
|
||||
|
||||
ChatTransit.Send = (data) =>
|
||||
logger\info "Sending '#{data.Type}'"
|
||||
steamID = data.Data.SteamId
|
||||
|
||||
data.Data.Avatar or= getAvatar steamID
|
||||
data.Realm = @Realm\GetString!
|
||||
data.Data.SteamId or= ""
|
||||
|
||||
|
@ -9,7 +9,6 @@ ChatTransit.AnticrashEvent = (eventText) =>
|
||||
Data:
|
||||
Content: eventText
|
||||
SteamName: "CFC Anticrash"
|
||||
Avatar: ""
|
||||
|
||||
hook.Add "z_anticrash_LagDetect", "CFC_ChatTransit_AnticrashEventListener", guard ChatTransit\AnticrashEvent
|
||||
hook.Add "z_anticrash_LagStuck", "CFC_ChatTransit_AnticrashEventListener", guard ChatTransit\AnticrashEvent
|
||||
|
@ -5,15 +5,11 @@ ChatTransit.ReceiveMessage = (ply, text, teamChat) =>
|
||||
return unless text
|
||||
return if text == ""
|
||||
|
||||
summary = ply.SteamLookup and ply.SteamLookup.PlayerSummary
|
||||
avatar = summary and summary.response.players[1].avatarfull
|
||||
|
||||
@Send
|
||||
Type: "message"
|
||||
Data:
|
||||
Type: "message"
|
||||
Content: text
|
||||
Avatar: avatar
|
||||
SteamName: ply\Nick!
|
||||
SteamId: ply\SteamID64!
|
||||
IrisId: "none"
|
||||
|
@ -15,28 +15,11 @@ ChatTransit.PlayerConnect = (data) =>
|
||||
SteamId: SteamIDTo64 steamId if steamId
|
||||
|
||||
ChatTransit.PlayerInitialSpawn = (ply) =>
|
||||
sendMessage = (attempts=1) ->
|
||||
local avatar
|
||||
|
||||
if attempts >= 5
|
||||
@Logger\warn "PlayerSummary didn't exist in time to send an on-spawn message"
|
||||
else
|
||||
summary = ply.SteamLookup and ply.SteamLookup.PlayerSummary
|
||||
|
||||
if summary
|
||||
avatar = summary.response.players[1].avatarfull
|
||||
else
|
||||
delay = 2 + ( attempts * 2 )
|
||||
return timer.Simple delay, -> sendMessage attempts + 1
|
||||
|
||||
@Send
|
||||
Type: "spawn"
|
||||
Data:
|
||||
Avatar: avatar
|
||||
SteamName: ply\Nick!
|
||||
SteamId: ply\SteamID64!
|
||||
|
||||
sendMessage!
|
||||
@Send
|
||||
Type: "spawn"
|
||||
Data:
|
||||
SteamName: ply\Nick!
|
||||
SteamId: ply\SteamID64!
|
||||
|
||||
gameevent.Listen "player_connect"
|
||||
hook.Add "player_connect", "CFC_ChatTransit_SpawnListener", guard ChatTransit\PlayerConnect
|
||||
|
@ -7,13 +7,9 @@ ChatTransit.PlayerDisconnected = (data) =>
|
||||
|
||||
ply = GetBySteamID steamId
|
||||
|
||||
summary = ply and ply.SteamLookup and ply.SteamLookup.PlayerSummary
|
||||
avatar = summary and summary.response.players[1].avatarfull
|
||||
|
||||
@Send
|
||||
Type: "disconnect"
|
||||
Data:
|
||||
Avatar: avatar
|
||||
SteamName: ply and ply\Nick! or name
|
||||
SteamId: ply and ply\SteamID64! or SteamIDTo64 steamId
|
||||
Content: reason
|
||||
|
@ -29,6 +29,13 @@ http {
|
||||
include /etc/nginx/mime.types;
|
||||
root /usr/share/nginx/html;
|
||||
autoindex on;
|
||||
|
||||
try_files $uri @default;
|
||||
}
|
||||
|
||||
location @default {
|
||||
add_header Cache-Control "no-store";
|
||||
return 302 https://avatarservice.cfcservers.org/avatars/default.png;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
BIN
web/avatar_service/default.png
Normal file
BIN
web/avatar_service/default.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 238 KiB |
@ -7,6 +7,7 @@ services:
|
||||
volumes:
|
||||
- ./avatars.conf:/etc/nginx/nginx.conf
|
||||
- "$AVATARS_DIR:/usr/share/nginx/html/avatars"
|
||||
- ./default.png:/usr/share/nginx/html/avatars/default.png
|
||||
|
||||
service:
|
||||
build:
|
||||
|
@ -13,12 +13,9 @@ base_url = os.getenv("AVATAR_SERVICE_URL")
|
||||
@app.route("/outline", methods=["POST"])
|
||||
def outline() -> str:
|
||||
content = request.json
|
||||
image_url = content["avatarUrl"]
|
||||
steam_id = content["steamid"]
|
||||
|
||||
image_name = image_url.split("/")[-1] # "example.jpg"
|
||||
image_name = image_name.split(".")[0] # "example"
|
||||
|
||||
avatar_path = f"/avatars/{image_name}.png"
|
||||
avatar_path = f"/avatars/{steam_id}.png"
|
||||
|
||||
if os.path.isfile(avatar_path):
|
||||
os.remove(avatar_path)
|
||||
@ -28,6 +25,7 @@ def outline() -> str:
|
||||
outline_color = [int(c) for c in outline_color] # [255, 255, 255, 255]
|
||||
outline_color = tuple(outline_color) # (255, 255, 255, 255)
|
||||
|
||||
image_url = content["avatarUrl"]
|
||||
raw_image = requests.get(image_url, stream=True).raw
|
||||
avatar = Image.open(raw_image).convert("RGB")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user