From f0429f824ad13ff495064ad49de06005b0ff8193 Mon Sep 17 00:00:00 2001 From: Madpeterz <57852827+Madpeterz@users.noreply.github.com> Date: Tue, 9 Feb 2021 18:47:16 +0000 Subject: [PATCH] new command plus fixs to athome and http --- CLI/HttpService/HttpAsService.cs | 24 ++++++++++++----- Core/Commands/Group/GroupEject.cs | 45 +++++++++++++++++++++++++++++++ Core/bottypes/athome.cs | 29 +++++++++++++++++--- 3 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 Core/Commands/Group/GroupEject.cs diff --git a/CLI/HttpService/HttpAsService.cs b/CLI/HttpService/HttpAsService.cs index 870ccda..ff7dce4 100644 --- a/CLI/HttpService/HttpAsService.cs +++ b/CLI/HttpService/HttpAsService.cs @@ -22,6 +22,7 @@ namespace BetterSecondBot.HttpService protected JsonConfig Config; protected SecondBot Bot; protected TokenStorage Tokens; + protected bool killedLogger = false; protected void loadScopedTokensFromENV() { @@ -139,15 +140,26 @@ namespace BetterSecondBot.HttpService } // Our web server is disposable - Logger.UnregisterLogger(); - using (var server = CreateWebServer(Config.Http_Host)) + try { - // Once we've registered our modules and configured them, we call the RunAsync() method. - server.RunAsync(); - while(Bot.KillMe == false) + if (killedLogger == false) { - Thread.Sleep(3000); + killedLogger = true; + Logger.UnregisterLogger(); } + using (var server = CreateWebServer(Config.Http_Host)) + { + // Once we've registered our modules and configured them, we call the RunAsync() method. + server.RunAsync(); + while (Bot.KillMe == false) + { + Thread.Sleep(3000); + } + } + } + catch + { + } } diff --git a/Core/Commands/Group/GroupEject.cs b/Core/Commands/Group/GroupEject.cs new file mode 100644 index 0000000..ae06a28 --- /dev/null +++ b/Core/Commands/Group/GroupEject.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using OpenMetaverse; +using BetterSecondBotShared.logs; + +namespace BSB.Commands.Group +{ + public class GroupEject : CoreCommand_2arg + { + public override string[] ArgTypes { get { return new[] { "UUID", "Avatar" }; } } + public override string[] ArgHints { get { return new[] { "GROUP", "Avatar [UUID or Firstname Lastname]"}; } } + public override string Helpfile { get { return "Eject selected avatar from group"; } } + + public override bool CallFunction(string[] args) + { + if (base.CallFunction(args) == true) + { + if (UUID.TryParse(args[0], out UUID target_group) == true) + { + if (UUID.TryParse(args[1], out UUID target_avatar) == true) + { + if (bot.MyGroups.ContainsKey(target_group) == true) + { + bot.GetClient.Groups.EjectUser(target_group, target_avatar); + return true; + } + else + { + return Failed("I am not a member of that group"); + } + } + else + { + return Failed("Invaild avatar UUID"); + } + } + else + { + return Failed("Invaild group UUID"); + } + } + return false; + } + } +} diff --git a/Core/bottypes/athome.cs b/Core/bottypes/athome.cs index 954fd37..f503cce 100644 --- a/Core/bottypes/athome.cs +++ b/Core/bottypes/athome.cs @@ -162,7 +162,7 @@ namespace BSB.bottypes } else { - long dif = last_tp_attempt_unixtime - helpers.UnixTimeNow(); + long dif = helpers.UnixTimeNow() - last_tp_attempt_unixtime; if (dif > 0) { addon = "Waiting for TP cooldown"; @@ -182,6 +182,7 @@ namespace BSB.bottypes protected long login_failed_retry_at = 0; + protected long connection_lost_at = 0; public string AtHomeReconnect() { if (attempted_first_login == true) @@ -199,11 +200,12 @@ namespace BSB.bottypes } else { - long dif = login_failed_retry_at - helpers.UnixTimeNow(); + long dif = helpers.UnixTimeNow() - login_failed_retry_at; if(dif > 0) { login_failed_retry_at = 0; attempted_first_login = false; + login_failed = false; Start(true); return "Attempting reconnect"; } @@ -216,7 +218,27 @@ namespace BSB.bottypes } else { - return "Waiting"; + if(connection_lost_at == 0) + { + connection_lost_at = helpers.UnixTimeNow() + 30; + return "Connection lost reconnect in 30 secs"; + } + else + { + long dif = helpers.UnixTimeNow() - connection_lost_at; + if(dif > 0) + { + login_failed_retry_at = 0; + attempted_first_login = false; + login_failed = false; + Start(true); + return "Attempting reconnect"; + } + else + { + return "Connection lost reconnect in "+ dif.ToString()+" secs"; + } + } } } @@ -299,6 +321,7 @@ namespace BSB.bottypes string reply = "Disconnected: No action"; if (Client.Network.Connected == true) { + connection_lost_at = 0; if (Client.Network.CurrentSim != null) { if(after_login_fired == false)