Пример #1
0
        public async Task UpdateData(JsonClasses.CharacterData characterData, JsonClasses.CorporationData rCorp = null, JsonClasses.AllianceData rAlliance = null, string permissions = null)
        {
            rCorp = rCorp ?? await APIHelper.ESIAPI.GetCorporationData(LogCat.AuthCheck.ToString(), characterData.corporation_id, true);

            Data.CharacterName     = characterData.name;
            Data.CorporationId     = characterData.corporation_id;
            Data.CorporationName   = rCorp?.name;
            Data.CorporationTicker = rCorp?.ticker;
            Data.AllianceId        = characterData.alliance_id ?? 0;
            if (Data.AllianceId > 0)
            {
                rAlliance = rAlliance ?? await APIHelper.ESIAPI.GetAllianceData(LogCat.AuthCheck.ToString(), characterData.alliance_id, true);

                Data.AllianceName   = rAlliance?.name;
                Data.AllianceTicker = rAlliance?.ticker;
            }
            if (permissions != null)
            {
                Data.Permissions = permissions;
            }
        }
Пример #2
0
        public async Task <bool> RefreshRadius(string reason, JsonZKill.Killmail kill)
        {
            if (killmailID > 0)
            {
                return(true);
            }
            try
            {
                killmailID = kill.killmail_id;
                value      = kill.zkb.totalValue;
                systemId   = kill.solar_system_id;
                rSystem    = await APIHelper.ESIAPI.GetSystemData(reason, systemId);

                isUnreachableSystem = systemId == 31000005;
                if (rSystem != null)
                {
                    sysName             = rSystem.name == rSystem.system_id.ToString() ? "Abyss" : (rSystem.name ?? "J");
                    isUnreachableSystem = rSystem.IsUnreachable();
                }
                else
                {
                    sysName = "?";
                }

                victimCharacterID       = kill.victim.character_id;
                victimCorpID            = kill.victim.corporation_id;
                victimAllianceID        = kill.victim.alliance_id;
                attackers               = kill.attackers;
                finalBlowAttacker       = attackers.FirstOrDefault(a => a.final_blow);
                finalBlowAttackerCorpId = finalBlowAttacker?.corporation_id ?? 0;
                finalBlowAttackerAllyId = finalBlowAttacker?.alliance_id ?? 0;
                shipID   = kill.victim.ship_type_id;
                killTime = kill.killmail_time.ToString(SettingsManager.Settings.Config.ShortTimeFormat);

                rVictimCorp = await APIHelper.ESIAPI.GetCorporationData(reason, victimCorpID);

                rAttackerCorp = finalBlowAttackerCorpId > 0
                        ? await APIHelper.ESIAPI.GetCorporationData(reason, finalBlowAttackerCorpId)
                        : null;

                rVictimAlliance = victimAllianceID != 0 ? await APIHelper.ESIAPI.GetAllianceData(reason, victimAllianceID) : null;

                rAttackerAlliance = finalBlowAttackerAllyId > 0
                        ? await APIHelper.ESIAPI.GetAllianceData(reason, finalBlowAttackerAllyId)
                        : null;

                rShipType = await APIHelper.ESIAPI.GetTypeId(reason, shipID);

                rVictimCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, victimCharacterID);

                rAttackerCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, finalBlowAttacker?.character_id);

                systemSecurityStatus = Math.Round(rSystem.security_status, 1).ToString("0.0");

                dic = new Dictionary <string, string>
                {
                    { "{shipID}", shipID.ToString() },
                    { "{shipType}", rShipType?.name },
                    { "{iskValue}", value.ToString("n0") },
                    { "{systemName}", sysName },
                    { "{systemSec}", systemSecurityStatus },
                    { "{victimName}", rVictimCharacter?.name },
                    { "{victimCorpName}", rVictimCorp?.name },
                    { "{victimCorpTicker}", rVictimCorp?.ticker },
                    { "{victimAllyName}", rVictimAlliance?.name },
                    { "{victimAllyTicker}", rVictimAlliance == null ? null : $"<{rVictimAlliance.ticker}>" },
                    { "{attackerName}", rAttackerCharacter?.name },
                    { "{attackerCorpName}", rAttackerCorp?.name },
                    { "{attackerCorpTicker}", rAttackerCorp?.ticker },
                    { "{attackerAllyTicker}", rAttackerAlliance == null ? null : $"<{rAttackerAlliance.ticker}>" },
                    { "{attackerAllyName}", rAttackerAlliance?.name },
                    { "{attackersCount}", attackers?.Length.ToString() },
                    { "{kmId}", killmailID.ToString() },
                    { "{isNpcKill}", isNPCKill.ToString() },
                    { "{timestamp}", killTime }
                };


                return(true);
            }
            catch (Exception ex)
            {
                killmailID = 0;
                await LogHelper.LogEx("refresh ex", ex, LogCat.RadiusKill);

                return(false);
            }
        }
Пример #3
0
        private static async Task <bool> AuthGrantRoles(ulong channelId, string characterID, Dictionary <int, List <string> > foundList, JsonClasses.CharacterData characterData, JsonClasses.CorporationData corporationData, string remainder, ulong discordId)
        {
            var rolesToAdd = new List <SocketRole>();

            var allianceID = characterData.alliance_id ?? 0;
            var corpID     = characterData.corporation_id;

            var authSettings = TickManager.GetModule <WebAuthModule>()?.Settings.WebAuthModule;
            var missedRoles  = new List <string>();

            try
            {
                //Check for Corp roles
                if (foundList.ContainsKey(corpID))
                {
                    var cRoles = foundList[corpID];
                    cRoles.ForEach(a =>
                    {
                        var f = APIHelper.DiscordAPI.GetGuildRole(a);
                        if (f != null && !rolesToAdd.Contains(f))
                        {
                            rolesToAdd.Add(f);
                        }
                        else
                        {
                            missedRoles.Add(a);
                        }
                    });
                }

                //Check for Alliance roles
                if (foundList.ContainsKey(allianceID))
                {
                    var cRoles = foundList[allianceID];
                    cRoles.ForEach(a =>
                    {
                        var f = APIHelper.DiscordAPI.GetGuildRole(a);
                        if (f != null && !rolesToAdd.Contains(f))
                        {
                            rolesToAdd.Add(f);
                        }
                        else
                        {
                            missedRoles.Add(a);
                        }
                    });
                }

                var discordUser = APIHelper.DiscordAPI.GetUser(discordId);

                if (authSettings.AuthReportChannel != 0)
                {
                    await APIHelper.DiscordAPI.SendMessageAsync(authSettings.AuthReportChannel, LM.Get("grantRolesMessage", characterData.name))
                    .ConfigureAwait(false);
                }
                await APIHelper.DiscordAPI.AssignRolesToUser(discordUser, rolesToAdd);

                if (missedRoles.Any())
                {
                    await LogHelper.LogWarning($"Missing discord roles: {string.Join(',', missedRoles)}");
                }

                var rolesString = new StringBuilder();
                foreach (var role in discordUser.Roles)
                {
                    if (role.Name.StartsWith("@everyone"))
                    {
                        continue;
                    }
                    rolesString.Append(role.Name.Replace("\"", "&br;"));
                    rolesString.Append(",");
                }
                if (rolesString.Length > 0)
                {
                    rolesString.Remove(rolesString.Length - 1, 1);
                }

                await SQLHelper.SQLiteDataUpdate("pendingUsers", "active", "0", "authString", remainder);

                if (channelId != 0)
                {
                    await APIHelper.DiscordAPI.SendMessageAsync(channelId, LM.Get("msgAuthSuccess", discordUser.Mention, characterData.name));
                }
                var eveName   = characterData.name;
                var discordID = discordUser.Id;
                var addedOn   = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

                await SQLHelper.SQLiteDataInsertOrUpdate("authUsers", new Dictionary <string, object>
                {
                    { "eveName", eveName },
                    { "characterID", characterID },
                    { "discordID", discordID.ToString() },
                    { "role", rolesString.ToString() },
                    { "active", "yes" },
                    { "addedOn", addedOn }
                });

                if (authSettings.EnforceCorpTickers || authSettings.EnforceCharName)
                {
                    var nickname = "";
                    if (authSettings.EnforceCorpTickers)
                    {
                        nickname = $"[{corporationData.ticker}] ";
                    }
                    if (authSettings.EnforceCharName)
                    {
                        nickname += $"{eveName}";
                    }
                    else
                    {
                        nickname += $"{discordUser.Username}";
                    }

                    try
                    {
                        //will throw ex on admins
                        await discordUser.ModifyAsync(x => x.Nickname = nickname);
                    }
                    catch
                    {
                        //ignore
                    }

                    await APIHelper.DiscordAPI.Dupes(discordUser);
                }
            }
            catch (Exception ex)
            {
                await LogHelper.LogEx($"Failed adding Roles to User {characterData.name}, Reason: {ex.Message}", ex, LogCat.Discord);

                return(false);
            }

            return(true);
        }
Пример #4
0
        public async Task <bool> Refresh(string reason, JsonZKill.Killmail kill)
        {
            if (killmailID > 0)
            {
                return(true);
            }
            try
            {
                killmailID                   = kill.killmail_id;
                killTime                     = kill.killmail_time.ToString(SettingsManager.Settings.Config.ShortTimeFormat);
                victimShipID                 = kill.victim.ship_type_id;
                value                        = kill.zkb.totalValue;
                victimCharacterID            = kill.victim.character_id;
                victimCorpID                 = kill.victim.corporation_id;
                victimAllianceID             = kill.victim.alliance_id;
                attackers                    = kill.attackers;
                finalBlowAttacker            = attackers.FirstOrDefault(a => a.final_blow);
                finalBlowAttackerCharacterId = finalBlowAttacker.character_id;
                attackerShipID               = finalBlowAttacker?.ship_type_id ?? 0;
                finalBlowAttackerCorpId      = finalBlowAttacker?.corporation_id ?? 0;
                finalBlowAttackerAllyId      = finalBlowAttacker?.alliance_id ?? 0;
                isNPCKill                    = kill.zkb.npc;
                systemId                     = kill.solar_system_id;
                rSystem                      = await APIHelper.ESIAPI.GetSystemData(reason, systemId);

                if (rSystem == null)
                {
                    //ESI fail - check back later
                    return(false);
                }

                rVictimCorp = await APIHelper.ESIAPI.GetCorporationData(reason, victimCorpID);

                rAttackerCorp = finalBlowAttackerCorpId > 0
                    ? await APIHelper.ESIAPI.GetCorporationData(reason, finalBlowAttackerCorpId)
                    : null;

                rVictimAlliance = victimAllianceID != 0 ? await APIHelper.ESIAPI.GetAllianceData(reason, victimAllianceID) : null;

                rAttackerAlliance = finalBlowAttackerAllyId > 0
                    ? await APIHelper.ESIAPI.GetAllianceData(reason, finalBlowAttackerAllyId)
                    : null;

                sysName = rSystem.name == rSystem.system_id.ToString() ? "Abyss" : rSystem.name;
                var rConst = rSystem != null ? await APIHelper.ESIAPI.GetConstellationData(reason, rSystem.constellation_id) : null;

                var rRegion = rConst != null ? await APIHelper.ESIAPI.GetRegionData(reason, rConst.region_id) : null;

                rVictimShipType = await APIHelper.ESIAPI.GetTypeId(reason, victimShipID);

                rAttackerShipType = await APIHelper.ESIAPI.GetTypeId(reason, attackerShipID);

                rVictimCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, victimCharacterID);

                rAttackerCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, finalBlowAttacker?.character_id);

                systemSecurityStatus = Math.Round(rSystem.security_status, 1).ToString("0.0");

                dic = new Dictionary <string, string>
                {
                    { "{shipID}", victimShipID.ToString() },
                    { "{shipType}", rVictimShipType?.name },
                    { "{attackerShipID}", attackerShipID.ToString() },
                    { "{attackerShipType}", rAttackerShipType?.name },
                    { "{iskValue}", value.ToString("n0") },
                    { "{iskFittedValue}", kill?.zkb?.fittedValue.ToString("n0") ?? "0" },
                    { "{systemName}", sysName },
                    { "{constName}", rConst?.name },
                    { "{regionName}", rRegion?.name },
                    { "{systemSec}", systemSecurityStatus },
                    { "{victimName}", rVictimCharacter?.name },
                    { "{victimCorpName}", rVictimCorp?.name },
                    { "{victimCorpTicker}", rVictimCorp?.ticker },
                    { "{victimAllyName}", rVictimAlliance?.name },
                    { "{victimAllyTicker}", rVictimAlliance == null ? null : $"<{rVictimAlliance.ticker}>" },
                    { "{victimAllyOrCorpName}", rVictimAlliance?.name ?? rVictimCorp?.name },
                    { "{victimAllyOrCorpTicker}", rVictimAlliance?.ticker ?? rVictimCorp?.ticker },
                    { "{attackerName}", rAttackerCharacter?.name },
                    { "{attackerCorpName}", rAttackerCorp?.name },
                    { "{attackerCorpTicker}", rAttackerCorp?.ticker },
                    { "{attackerAllyTicker}", rAttackerAlliance == null ? null : $"<{rAttackerAlliance.ticker}>" },
                    { "{attackerAllyName}", rAttackerAlliance?.name },
                    { "{attackerAllyOrCorpName}", rAttackerAlliance?.name ?? rAttackerCorp?.name },
                    { "{attackerAllyOrCorpTicker}", rAttackerAlliance?.ticker ?? rAttackerCorp?.ticker },
                    { "{attackersCount}", attackers.Length.ToString() },
                    { "{kmId}", killmailID.ToString() },
                    { "{timestamp}", killTime },
                    { "{isLoss}", "false" },
                    { "{isNpcKill}", isNPCKill.ToString() ?? "false" },
                    { "{isSoloKill}", kill?.zkb?.solo.ToString() ?? "false" },
                    { "{isAwoxKill}", kill?.zkb?.awox.ToString() ?? "false" },
                };

                return(true);
            }
            catch (Exception ex)
            {
                killmailID = 0;
                await LogHelper.LogEx("refresh ex", ex, LogCat.KillFeed);

                return(false);
            }
        }