Introduces configuration options and logic for prefetching inventory folders on startup, including depth control. Updates Dockerfile and DataStoreConfig to support new settings, and modifies DataStoreService to handle inventory preloading asynchronously.
175 lines
6.1 KiB
Docker
175 lines
6.1 KiB
Docker
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
|
|
|
FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base
|
|
WORKDIR /app
|
|
|
|
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
|
WORKDIR /src
|
|
COPY ["NuGet.Config", "."]
|
|
COPY ["SecondBotEvents/SecondBotEvents.csproj", "SecondBotEvents/"]
|
|
COPY ["LibreMetaverse/LibreMetaverse.csproj", "LibreMetaverse/"]
|
|
COPY ["LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj", "LibreMetaverse.StructuredData/"]
|
|
COPY ["LibreMetaverse.Types/LibreMetaverse.Types.csproj", "LibreMetaverse.Types/"]
|
|
RUN dotnet restore "SecondBotEvents/SecondBotEvents.csproj"
|
|
COPY . .
|
|
WORKDIR "/src/SecondBotEvents"
|
|
RUN dotnet build "SecondBotEvents.csproj" -c Release -o /app/build
|
|
|
|
FROM build AS publish
|
|
RUN dotnet publish "SecondBotEvents.csproj" -c Release -o /app/publish /p:UseAppHost=false
|
|
|
|
FROM base AS final
|
|
WORKDIR /app
|
|
COPY --from=publish /app/publish .
|
|
|
|
ENV basic_Username='' \
|
|
basic_Password='' \
|
|
basic_LoginURI='secondlife' \
|
|
basic_LogCommands='true' \
|
|
basic_DefaultHoverHeight=0.1 \
|
|
commands_AllowFundsCommands='false' \
|
|
commands_AllowIMcontrol='false' \
|
|
commands_SharedSecret='examplecode' \
|
|
commands_EnableMasterControls='true' \
|
|
commands_MastersCSV='Madpeter Zond' \
|
|
commands_CheckDotNames='false' \
|
|
commands_EnforceTimeWindow='false' \
|
|
commands_TimeWindowSecs=35 \
|
|
commands_Enabled='true' \
|
|
commands_ObjectMasterOptout='false' \
|
|
commands_AllowServiceControl='false' \
|
|
commands_CommandHistoryLogResults='false' \
|
|
datastore_AutoCleanAvatars='true' \
|
|
datastore_AvatarsCleanAfterMins=10 \
|
|
datastore_LocalChatHistoryLimit=120 \
|
|
datastore_PrefetchAvatarDisplaynames='true' \
|
|
datastore_GroupChatHistoryLimitPerGroup=50 \
|
|
datastore_ImChatHistoryLimit=50 \
|
|
datastore_PrefetchGroupMembers='true' \
|
|
datastore_PrefetchGroupRoles='false' \
|
|
datastore_PrefetchInventory='false' \
|
|
datastore_PrefetchInventoryDepth='2' \
|
|
datastore_PrefetchEstateBanlist='true' \
|
|
datastore_AutoCleanKeyValueStore='true' \
|
|
datastore_CleanKeyValueStoreAfterMins=10 \
|
|
datastore_CommandHistoryLimit=30 \
|
|
discord_Enabled='false' \
|
|
discord_ServerID='' \
|
|
discord_ClientToken='' \
|
|
discord_AllowDiscordCommands='false' \
|
|
discord_hideChatterName='false' \
|
|
events_Enabled='false' \
|
|
events_GroupMemberJoins='false' \
|
|
events_GroupMemberLeaves='false' \
|
|
events_GroupMemberEventsGroupUUID='' \
|
|
events_GuestEntersArea='false' \
|
|
events_GuestLeavesArea='false' \
|
|
events_GuestTrackingSimname='' \
|
|
events_GuestTrackingParcelname='' \
|
|
events_SimAlertMessage='false' \
|
|
events_StatusMessage='false' \
|
|
events_MoneyEvent='false' \
|
|
events_ChangeSim='false' \
|
|
events_ChangeParcel='false' \
|
|
events_OutputChannel=-1 \
|
|
events_OutputIMuuid='00000000-0000-0000-0000-000000000000' \
|
|
events_OutputHttpURL='none' \
|
|
events_OutputSecret='notset' \
|
|
homebound_Enabled='false' \
|
|
homebound_HomeSimSlUrl='' \
|
|
homebound_BackupSimSLUrl='' \
|
|
homebound_AtHomeSeekLocation='false' \
|
|
homebound_AtBackupSeekLocation='false' \
|
|
homebound_AtHomeAutoSitUuid='00000000-0000-0000-0000-000000000000' \
|
|
homebound_ReturnToHomeSimAfterMins=5 \
|
|
http_Enabled='false' \
|
|
http_Port=80 \
|
|
http_DisableCommandValidation='false' \
|
|
interaction_Enabled='true' \
|
|
interaction_AcceptTeleports='false' \
|
|
interaction_AcceptGroupInvites='false' \
|
|
interaction_AcceptInventory='false' \
|
|
interaction_AcceptFriendRequests='false' \
|
|
interaction_EnableJsonOutputEvents='false' \
|
|
interaction_JsonOutputEventsTarget='none' \
|
|
interaction_FriendRequestLevel='Owner' \
|
|
interaction_InventoryTransferLevel='Owner' \
|
|
interaction_GroupInviteLevel='Owner' \
|
|
interaction_TeleportRequestLevel='Owner' \
|
|
interaction_EnableDebug='false' \
|
|
commands_HideStatusOutput='false' \
|
|
datastore_HideStatusOutput='false' \
|
|
discord_HideStatusOutput='false' \
|
|
events_HideStatusOutput='false' \
|
|
homebound_HideStatusOutput='false' \
|
|
http_HideStatusOutput='false' \
|
|
interaction_HideStatusOutput='false' \
|
|
rlv_Enabled='false' \
|
|
rlv_HideStatusOutput='false' \
|
|
relay_count='0' \
|
|
relay_HideStatusOutput='false' \
|
|
relay_UseShortEncoder='false' \
|
|
chatgpt_Enabled='false' \
|
|
chatgpt_FakeTypeDelay='true' \
|
|
chatgpt_ApiKey='none' \
|
|
chatgpt_OrganizationId='none' \
|
|
chatgpt_AllowImReplys='false' \
|
|
chatgpt_ImReplyFriendsOnly='true' \
|
|
chatgpt_AllowGroupReplys='false' \
|
|
chatgpt_GroupReplyForGroup='none' \
|
|
chatgpt_LocalchatReply='false' \
|
|
chatgpt_UseModel='gpt-3.5-turbo' \
|
|
chatgpt_ChatHistoryMessages='5' \
|
|
chatgpt_ChatPrompt='respond as if you are a horse that knows its going to the glue factory and you are upset about this fact' \
|
|
chatgpt_Provider='openai' \
|
|
chatgtp_ShowDebug='false' \
|
|
chatgpt_ImReplyRateLimiter='3' \
|
|
chatgpt_GroupReplyRateLimiter='3' \
|
|
chatgpt_LocalchatRateLimiter='3' \
|
|
chatgpt_ChatHistoryTimeout='15' \
|
|
chatgpt_CustomName='<!FIRSTNAME!>' \
|
|
chatgpt_UseRedis='false' \
|
|
chatgpt_RedisSource='127.0.0.1:6379' \
|
|
chatgpt_RedisPrefix='sbot' \
|
|
chatgpt_RedisLocalchat='false' \
|
|
chatgpt_RedisGroupchat='false' \
|
|
chatgpt_RedisImchat='true' \
|
|
chatgpt_RedisMaxageMins='120' \
|
|
chatgpt_RedisCountLocal='60' \
|
|
chatgpt_RedisCountGroup='60' \
|
|
chatgpt_RedisCountIm='60' \
|
|
onevent_Enabled='false' \
|
|
onevent_Count=0 \
|
|
onevent_WaitSecsToStart=10 \
|
|
onevent_HideStatusOutput='false' \
|
|
smtp_Enabled='false' \
|
|
smtp_AllowEmailAsReplyTarget='false' \
|
|
smtp_AllowCommandSendMail='false' \
|
|
smtp_UseAllowedRecivers='false' \
|
|
smtp_AllowedReciversCSV='none' \
|
|
smtp_AllowSendAlertStatus='false' \
|
|
smtp_AllowSendLoginNotice='false' \
|
|
smtp_MailReplyAddress='me@myemail.tld' \
|
|
smtp_Port='587' \
|
|
smtp_Host='smtp.mail.example' \
|
|
smtp_useSSL='false' \
|
|
smtp_User='me@email.addr.tld' \
|
|
smtp_Token='none' \
|
|
smtp_SendAlertsAndLoginsTo='me@somewhere.tld' \
|
|
smtp_HideStatusOutput='false' \
|
|
rabbit_Enabled='false' \
|
|
rabbit_HideStatusOutput='false' \
|
|
rabbit_HostIP='127.0.0.1' \
|
|
rabbit_HostUsername='guest' \
|
|
rabbit_HostPassword='guest' \
|
|
rabbit_HostPort='5672' \
|
|
rabbit_NotecardQueue='notecards' \
|
|
rabbit_CommandQueue='commands' \
|
|
rabbit_ImQueue='ims' \
|
|
rabbit_GroupImQueue='groupims' \
|
|
rabbit_LogDebug='true'
|
|
|
|
EXPOSE 80
|
|
ENV ASPNETCORE_URLS http://+:80
|
|
|
|
ENTRYPOINT ["dotnet", "SecondBotEvents.dll"]
|