Иконка ресурса

FREE AuthLite : 0.5 0.5

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.IO;
using System.Collections.Generic;
using System.Collections;
using Network;
using Oxide.Core;
using Oxide.Core.Libraries;
using UnityEngine;
using System.Reflection;

namespace Oxide.Plugins
{
    [Info("AuthLite", "DeathGX & ShadowRemove", "0.5")]
    [Description("Automatic id authentication")]
	/*
	this plugin detects no steam players
	*/
    public class AuthLite : RustPlugin
    {
		
		Dictionary<ulong,string> users=new Dictionary<ulong,string>();
		Dictionary<ulong,string> lastSaved=new Dictionary<ulong,string>();
		
		//discord webhook on user approved
		string id = "";
		string token = "";
		
		void Webhook(string msg) {
			if (id=="") return;
			/*webrequest.Enqueue(
				"http://localhost?query=webhook&id="+id+"&token="+token
				+"&msg="+UnityEngine.Networking.UnityWebRequest.EscapeURL(msg), null, (code, response) =>
			{*/
			string[] parameters = new string[]{
				"content="+UnityEngine.Networking.UnityWebRequest.EscapeURL(msg),
				"username=AuthLite"
			};
			
			string body = string.Join("&", parameters);
			
			webrequest.Enqueue("https://discord.com/api/webhooks/"+id+"/"+token, body, (code, response) =>
			{
				if (code != 200 || response == null)
				{
					Puts($"Couldn't get an answer!");
					return;
				}
				Puts($"Webhook answered: {response}");
			}, this, RequestMethod.POST);
		}
        void OnServerInitialized()
        {
			
			
			Rust.Defines.appID = 252490U;
			ConVar.Server.encryption = 1;
			ConVar.App.port = -1;
			//global::EACServer.easyAntiCheat=null;
			//ConVar.Server.secure=false;
            users = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, string>>("AuthLite/Users");
			Debug.Log("[AuthLite] read "+users.Count+" users");
			//server.port=-1;
			
        }
		bool EqualUsers(Dictionary<ulong,string> a, Dictionary<ulong,string> b) {
			if (a.Count!=b.Count) return false;
			foreach( KeyValuePair<ulong, string> u in a )
			{
				if (!b.ContainsKey(u.Key)) return false;
				if (u.Value!=b[u.Key]) return false;
			}
			return true;
		}
		void OnServerSave() 
        {
			if (!EqualUsers(users,lastSaved)) {
				lastSaved = new Dictionary<ulong,string>(users);
				Debug.Log("[AuthLite] write "+users.Count+" users");
				Interface.Oxide.DataFileSystem.WriteObject("AuthLite/Users", users);
			}
        }
		object OnUserApprove(Connection conn) {
            /*
            ulong conn.userid
            byte[] conn.token
            string conn.username
            string conn.ipadress
            global::ConnectionAuth.Reject(connection, "You are not allowed to join ;)", null);
            */
			string[] port=conn.ipaddress.Split(':');
			string ipName=conn.ipaddress.Replace(port[1],conn.username);
			if (users.ContainsKey(conn.userid)) {
				//login
				/*if (users[conn.userid] != ipName) {
					Debug.Log("[AuthLite] User "+conn.username+" Fail to Login");
					return null;//normal auth
				}*/
				
				Debug.Log("[AuthLite] User "+conn.username+" Login");
				
			} else {
				//register
				Debug.Log("[AuthLite] User "+conn.username+" Registered");
				users[conn.userid]=ipName;
			}
			
			global::ConnectionAuth.m_AuthConnection.Add(conn);
			
			ConnectionAuth auth=GameObject.FindObjectOfType<ConnectionAuth>();
			/*
			GameObject[] gos = (GameObject[])GameObject.FindObjectsOfType(GameObject);
            
             for (int i = 0; i < gos.Length; ++i)
             {
                 auth = (typeof(ConnectionAuth)) gos[i].GetComponent(typeof(ConnectionAuth));
                 if (auth!=null) {
                    break;
                 }
             }
			*/
			auth.StartCoroutine(AuthRoutine(conn,auth));
			
            return "Talk shit get hit";//if this value is not null breaks the steam auth
        }
		public static IEnumerator EAC(Connection connection)
		{
			connection.authStatus = string.Empty;
			
			global::EACServer.OnJoinGame(connection);
			while (connection.active && !connection.rejected && connection.authStatus == string.Empty)
			{
				yield return null;
			}
			yield break;
		}
		public static IEnumerator FakeSteam(Connection connection) {
		/*connection.authStatus = "";
			if (!PlatformService.Instance.BeginPlayerSession(connection.userid, connection.token))
		{*/
			
			 MethodInfo authLocal = typeof(EACServer).GetMethod("OnAuthenticatedLocal", BindingFlags.Static | BindingFlags.NonPublic);
			MethodInfo authRemote = typeof(EACServer).GetMethod("OnAuthenticatedRemote", BindingFlags.Static | BindingFlags.NonPublic);
			
					authLocal.Invoke(null, new object[]
					{
						connection
					});
					authRemote.Invoke(null, new object[]
					{
						connection
					});
				//no steam player
			//Debug.Log("[AuthLite]NoSteam Player");
				connection.authStatus = "ok";
				yield return null;
				yield return null;
				yield return null;
				/*connection.rejected = false;
				connection.active = true;
				connection.authLevel = 0U;*/
		//}
			/*global::Auth_Steam.waitingList.Add(connection);
			Stopwatch timeout = Stopwatch.StartNew();
			while (timeout.Elapsed.TotalSeconds < 30.0 && connection.active && !(connection.authStatus != ""))
			{
				yield return null;
			}
			global::Auth_Steam.waitingList.Remove(connection);
			if (!connection.active)
			{
				yield break;
			}
			if (connection.authStatus.Length == 0)
			{
				global::ConnectionAuth.Reject(connection, "Steam Auth Timeout", null);
				PlatformService.Instance.EndPlayerSession(connection.userid);
				yield break;
			}
			if (connection.authStatus == "banned")
			{
				global::ConnectionAuth.Reject(connection, "Auth: " + connection.authStatus, null);
				PlatformService.Instance.EndPlayerSession(connection.userid);
				yield break;
			}
			if (connection.authStatus == "gamebanned")
			{
				global::ConnectionAuth.Reject(connection, "Steam Auth: " + connection.authStatus, null);
				PlatformService.Instance.EndPlayerSession(connection.userid);
				yield break;
			}
			if (connection.authStatus == "vacbanned")
			{
				global::ConnectionAuth.Reject(connection, "Steam Auth: " + connection.authStatus, null);
				PlatformService.Instance.EndPlayerSession(connection.userid);
				yield break;
			}*/
			//string text = ConVar.Server.censorplayerlist ? RandomUsernames.Get(connection.userid + (ulong)((long)Random.Range(0, 100000))) : connection.username;
			PlatformService.Instance.UpdatePlayerSession(connection.userid, connection.username);
			yield break;
		}
		public IEnumerator AuthRoutine(Connection connection,ConnectionAuth auth)
		{
			//yield return auth.StartCoroutine(global::Auth_Steam.Run(connection));
			/*if (connection.authStatus != "ok") {
				Debug.Log();
			}*/
			/*Rust.Defines.appID = 252490U;
			yield return auth.StartCoroutine(global::Auth_Steam.Run(connection));
		if (connection.authStatus!="ok")
		{*/
			//no steam player
			Debug.Log("[AuthLite] NoSteam Player");
			yield return auth.StartCoroutine(FakeSteam(connection));
		//}
			
			//yield return auth.StartCoroutine(EAC(connection));
			//yield return auth.StartCoroutine(global::Auth_EAC.Run(connection));
			//yield return auth.StartCoroutine(global::Auth_CentralizedBans.Run(connection));
			/*if (connection.rejected || !connection.active)
			{
				yield break;
			}*/
			/*if (auth.IsAuthed(connection.userid))
			{
				global::ConnectionAuth.Reject(connection, "Ya estas conectado!", null);
				yield break;
			}*/
			yield return null;
			global::ConnectionAuth.m_AuthConnection.Remove(connection);
			
			//approve
			Debug.Log("[AuthLite] Approving...");
			auth.Approve(connection);
			Webhook(connection.username+" Connected from "+ConVar.Server.hostname);
		/*
		//ConnectionQueue cq = ServerMgr.Instance.connectionQueue;
		
		connection.state = Network.Connection.State.InQueue;
		//cq.queue.Add(connection);
		//cq.nextMessageTime = 0f;
		SingletonComponent<global::ServerMgr>.Instance.nextMessageTime = 0f;
		SingletonComponent<global::ServerMgr>.Instance.JoinGame(connection);*/
			yield break;
		}
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху