juaosilv Posted June 18, 2019 Share Posted June 18, 2019 Olá, queria saber qual é a melhor forma de proteger meus scripts. Percebi que alguns estão sendo baixados na pasta principal de resources do MTA aquela que baixa todos os mods dos servidroes que você entra. Minhas duvidas são: Se eu por em .luac os arquivos ainda vão ser baixados? (Se sim, imagino que as pessoas possam usar, claro q compilado mas ainda sim ainda poderam usar?) Qual a melhor forma de eu proteger os scripts pra caso mesmo em luac seja possivel usar, no caso o que eu faria pra mesmo assim não ser possivel. Link to comment
Jonas^ Posted June 18, 2019 Share Posted June 18, 2019 (edited) Apenas arquivos client-side's são baixados e executados no PC do cara, ou seja, se o script tiver 2 lados, server e client o script não vai funcionar, agora se for apenas client se o cara for esperto ele apenas adicionar no meta, sim é capaz de funcionar tranquilamente. -- Para resolver isso, é bem simples, você pode simplesmente declarar cache=false no meta e claro compilar o arquivo quanto + segurança melhor, exemplo: <meta> <info author="Jonas^" version="1.0" name="Staff Mode" type="script"/> <script src="server.luac" type="server"/> <script src="client.luac" type="client" cache="false"/> </meta> Pode ver que na linha do client tem o atributo cashe=false ou seja, ele não vai ser colocado na pasta no pc do cara, basicamente isso explicando a grosso modo. E tem a forma complexa, que é por proteção por IP, ou seja, os arquivos só vão startar naquele devido IP. Edited June 18, 2019 by Jonas^ Link to comment
juaosilv Posted June 18, 2019 Author Share Posted June 18, 2019 1 hour ago, Jonas^ said: Apenas arquivos client-side's são baixados e executados no PC do cara, ou seja, se o script tiver 2 lados, server e client o script não vai funcionar, agora se for apenas client se o cara for esperto ele apenas adicionar no meta, sim é capaz de funcionar tranquilamente. -- Para resolver isso, é bem simples, você pode simplesmente declarar cache=false no meta e claro compilar o arquivo quanto + segurança melhor, exemplo: <meta> <info author="Jonas^" version="1.0" name="Staff Mode" type="script"/> <script src="server.luac" type="server"/> <script src="client.luac" type="client" cache="false"/> </meta> Pode ver que na linha do client tem o atributo cashe=false ou seja, ele não vai ser colocado na pasta no pc do cara, basicamente isso explicando a grosso modo. E tem a forma complexa, que é por proteção por IP, ou seja, os arquivos só vão startar naquele devido IP. Interessante, mais uma duvida. Caso eu bote esse cache ele vai baixar o arquivo novamente sempre que entrar no servidor? É tipo aquela proteção que alguns usam que quando o script é baixado ele é excluido da pasta. Pq eu quero evitar que a pessoa sempre que entre tenha que baixar novamente algum script. Link to comment
Jonas^ Posted June 18, 2019 Share Posted June 18, 2019 Não, ele vai baixar apenas uma vez. Link to comment
[M]ister Posted June 18, 2019 Share Posted June 18, 2019 Na realidade tem que baixar de novo sim, pois é salvado na RAM... só não sei se é apagado quando desconecta do servidor ou na falta de energia. Link to comment
Other Languages Moderators Lord Henry Posted June 18, 2019 Other Languages Moderators Share Posted June 18, 2019 Eu compilo e faço proteção por IP. Se ocorrer vazamentos da host (ou se um cliente que comprou meu script tentar vazar ele na internet), ainda sim o resource estará protegido. Link to comment
Jonas^ Posted June 18, 2019 Share Posted June 18, 2019 Estranho, eu testei aqui, desloguei do server e loguei novamente e não necessitou baixar, talvez seja porque não desliguei o computador. Link to comment
Other Languages Moderators Lord Henry Posted June 18, 2019 Other Languages Moderators Share Posted June 18, 2019 (edited) 1 minute ago, Jonas^ said: Estranho, eu testei aqui, desloguei do server e loguei novamente e não necessitou baixar, talvez seja porque não desliguei o computador. Teste com arquivos client-side maiores. Algumas imagens de alta resolução, áudios, texturas. As vezes o download até ocorreu, mas foi rápido demais e nem deu pra perceber. E sim, desligue a máquina antes de testar de novo. Edited June 18, 2019 by Lord Henry Link to comment
juaosilv Posted June 19, 2019 Author Share Posted June 19, 2019 14 hours ago, Lord Henry said: Teste com arquivos client-side maiores. Algumas imagens de alta resolução, áudios, texturas. As vezes o download até ocorreu, mas foi rápido demais e nem deu pra perceber. E sim, desligue a máquina antes de testar de novo. Existe algum tópico explicando um pouco mais sobre essa proteção por IP? Já que usando cache tem que baixar novamente sempre que entra no servidor vou utilizar proteção por ip. Link to comment
DNL291 Posted June 19, 2019 Share Posted June 19, 2019 Aqui @juaosilv Com relação ao cache=false, contanto que você não utilize isso em muitos scripts não tem problema, são poucos KBs e muitas vezes é imperceptível o download, mas sugiro você fazer isso só para os scripts que você acha de muita importância. Link to comment
juaosilv Posted June 22, 2019 Author Share Posted June 22, 2019 On 19/06/2019 at 15:05, DNL291 said: Aqui @juaosilv Com relação ao cache=false, contanto que você não utilize isso em muitos scripts não tem problema, são poucos KBs e muitas vezes é imperceptível o download, mas sugiro você fazer isso só para os scripts que você acha de muita importância. Desculpa por reviver o tópico, mas eu fiz tudo como está nesse outro tópico mas ele da esse erro quando inicia: [13:55:58] ERROR: [EXTRA]/info/server.Lua:19: attempt to index upvalue 'expor ts' (a function value) Linha 19: addEventHandler( "onResourceStart", resourceRoot, function() if exports["seguranca"]:isServerAllowed() ~= true then - ESSA E A 19 cancelEvent( true ) end end ) O script seguranca: local bool = false local function isServerAllowed() return bool end fetchRemote( "http://checkip.dyndns.com/", function( response ) if ( response ~= "ERROR" ) then SERVER_IP = response:match( "<body>Current IP Address: (.-)</body>" ) or "MEUIP" if ( SERVER_IP ~= "MEUIP" ) then -- seu IP vai aqui return end bool = true end end ) <meta> <script src="server.Lua" type="server" cache="false" /> <export function="isServerAllowed" type="server" /> </meta> Ele falou algo sobre o feath demorar p pegar o ip, acho que o erro pode ser isso mas não consegui resolver. Link to comment
Other Languages Moderators Lord Henry Posted June 22, 2019 Other Languages Moderators Share Posted June 22, 2019 (edited) Seu script de segurança está todo errado. Edited June 22, 2019 by Lord Henry Link to comment
Other Languages Moderators Popular Post Lord Henry Posted June 22, 2019 Other Languages Moderators Popular Post Share Posted June 22, 2019 (edited) Resource de Segurança: Spoiler server.luac (deve estar compilado em luac) SERVER_IP = "false" function startIPChecking () if (hasObjectPermissionTo (getThisResource(), "function.fetchRemote", false)) then -- Se o resource de segurança tem permissão de fetchRemote, então: fetchRemote ("http://checkip.dyndns.com/", myCallback, "", false) -- Obtém o IP do servidor através deste link. else outputDebugString ("The resource '"..getResourceName (getThisResource()).."' needs the following permission: function.fetchRemote", 1) SERVER_IP = "false" -- O resource de segurança precisa da seguinte permissão: function.fetchRemote para poder obter o IP do servidor. end end addEventHandler ("onResourceStart", resourceRoot, startIPChecking) function myCallback (responseData, errors) if (errors == 0) then -- Se não houve erros durante o callBack, então: SERVER_IP = responseData:match("<body>Current IP Address: (.-)</body>") -- SERVER_IP recebe uma string com o IP do servidor. else SERVER_IP = "error" end end function getServerIP() -- Função exportada return SERVER_IP end <meta> <script src="server.luac" type="server" /> <!-- O resource precisa estar obrigatóriamente compilado --> <export function="getServerIP" type="server" /> <!-- Função exportada, que apenas vai mandar o valor da variável Server_IP pros outros resources lerem. --> <min_mta_version server="1.5.6-9.18728" client="1.5.6-9.18728" /> <!-- luac exige esta verificação de versão --> <download_priority_group>2</download_priority_group> <!-- Faz este resource ser baixado e executado antes dos outros --> </meta> Resource protegido: Spoiler server.luac (ele deverá estar compilado também) function authorizeResource () authorizedIP = "000.000.000.000" -- Coloque o IP do server autorizado aqui. local ip = exports["serverIP"]:getServerIP () -- ip recebe o valor que está na variável Server_IP do resource de segurança. if (ip ~= authorizedIP) then -- Se o IP que recebeu do resource de segurança for diferente do IP configurado neste resource, então: cancelEvent(true, "This resource was not purchased by this IP.") -- Cancela a ativação deste resource. (não precisa de permissão Admin) print ("Incorrect Server IP from: "..getResourceName(getThisResource()).." (REASON: "..getCancelReason ()..")") -- Eu particularmente prefiro dar outputs técnicos em inglês pois o Server Console não aceita acentos. end end addEventHandler ("onResourceStart", resourceRoot, authorizeResource) <meta> <script src="server.luac" type="server" /> <!-- Tudo compilado --> <script src="client.luac" type="client" /> <include resource="serverIP" /> <!-- Isso faz com que este resource inicie o resource serverIP (resource de segurança) junto com ele, caso esteja desativado. --> <min_mta_version server="1.5.6-9.18728" client="1.5.6-9.18728"></min_mta_version> <!-- Isso faz com que o luac funcione --> </meta> Obviamente o meu sistema de segurança é mais avançado do que este. Mas já resolve seus problemas. Edited April 20, 2020 by Lord Henry Atualizado para funcionar com a versão 3 do luac 2 2 Link to comment
juaosilv Posted June 22, 2019 Author Share Posted June 22, 2019 (edited) Opa, agora está dando isso: start was requested (Failed to link to serverIP) Edited April 20, 2020 by Lord Henry Link to comment
Other Languages Moderators Lord Henry Posted June 22, 2019 Other Languages Moderators Share Posted June 22, 2019 Vc deve mudar no export pro nome do seu resource. ServerIP é o nome do meu resource de segurança. Eu já esperava que vc fosse dar Ctrl+C e Ctrl+V sem nem ler direito. 1 1 Link to comment
juaosilv Posted June 22, 2019 Author Share Posted June 22, 2019 Just now, Lord Henry said: Vc deve mudar no export pro nome do seu resource. ServerIP é o nome do meu resource de segurança. Eu já esperava que vc fosse dar Ctrl+C e Ctrl+V sem nem ler direito. kkkkkkkkkkk valeu, funcionou. Link to comment
SRG013 Posted February 11, 2020 Share Posted February 11, 2020 Não entendo porque o meu ip retorna false Link to comment
Zeus12321 Posted January 31, 2022 Share Posted January 31, 2022 @Lord Henry Pode Me Explicar Melhor Como Que faz essa proteção? Se puder me chamar no discord... ( ?.?.?.?.?.?.?.?.?.?.?.?#4638 ) Link to comment
Other Languages Moderators Lord Henry Posted January 31, 2022 Other Languages Moderators Share Posted January 31, 2022 @Zeus12321Mostre o que você já tentou fazer. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now