←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

File_Watcher Orpheu

Fail's Photo Fail 04.08.2013

#include <amxmodx>
#include <orpheu>

#define PLUGIN "File watcher"
#define VERSION "0.2"
#define AUTHOR "mazdan"

#define f "file_watcher.log"

new Array:aRule
new Array:aFile
new Array:aRuleType

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_srvcmd("fw_add_file","file_add",_,"fw_add_file <ACCEPT | BLOCK> <filename>")
    register_srvcmd("fw_rules","show_rules")
    aRule=ArrayCreate(1,32)
    aRuleType=ArrayCreate(1,32)
    aFile=ArrayCreate(128,32)
    server_cmd("exec filewatcher.cfg")
    OrpheuRegisterHook(OrpheuGetFunction("FS_Open"),"FS_Open", OrpheuHookPre)
}



public OrpheuHookReturn:FS_Open(test[],b[])
{
    if(containi(b,"w")!=-1)
    {
        new rule
        strtolower(test)
        replace_all(test,strlen(test),"/","\")
        new len=strlen(test)
        new count=ArraySize(aFile)
        for(new i;(i<count && !rule);i++)
        {
            new file[128]
            ArrayGetString(aFile,i,file,127)
            switch(ArrayGetCell(aRuleType,i))
            {
                case 0:if(equal(test,file)) rule=i+1
                case 1:if(containi(test,file)==len-strlen(file)) rule=i+1
                case 2:if(containi(test,file)==0) rule=i+1
                case 3:if(containi(test,file)!=-1) rule=i+1
            }
        }
        if(rule)
        {
            if(ArrayGetCell(aRule,--rule))
            {
                log_to_file(f,"Rule [#%d] ACCEPT %s",rule,test)
                return OrpheuIgnored;
            }
            else
            {
                log_to_file(f,"Rule [#%d] BLOCK %s",rule,test)
                return OrpheuSupercede;
            }
        }
        else
        {
            log_to_file(f,"No rule BLOCK %s",test)
            return OrpheuSupercede;
        }
    }
    return OrpheuIgnored;
}


public file_add()
{
    new rule[10]
    new file[128]
    read_argv(1,rule,9)
    read_argv(2,file,127)
    if(!equal(rule,"ACCEPT") && !equal(rule,"BLOCK"))
    {
        log_to_file(f,"RULE ADD ERROR use <ACCEPT | BLOCK>")
        console_print(0,"RULE ADD ERROR use <ACCEPT | BLOCK>")
        return PLUGIN_HANDLED;
    }
    if(strlen(file)<1)
    {
        log_to_file(f,"RULE ADD ERROR ^" ^" to specify filename")
        console_print(0,"RULE ADD ERROR ^" ^" to specify filename")
        return PLUGIN_HANDLED;
    }
    ArrayPushCell(aRule,equal(rule,"ACCEPT"))
    ArrayPushCell(aRuleType,((file[0]==42) + 2*(file[strlen(file)-1]==42)) )        //Yep 42
    replace_all(file,127,"*","")
    replace_all(file,127,"/","\")
    ArrayPushString(aFile,file)
    return PLUGIN_HANDLED;
}

public show_rules()
{
    if(!ArraySize(aFile))
        console_print(0,"NO RULES FOUND!")
    else
    {
        new count=ArraySize(aFile)
        for(new i;i<count;i++)
        {
            new file[128]
            ArrayGetString(aFile,i,file,127)
            console_print(0,"[%d] %s %s%s%s",i,(ArrayGetCell(aRule,i))?"ACCEPT":"BLOCK",(ArrayGetCell(aRuleType,i) & 1)?"*":"",file,(ArrayGetCell(aRuleType,i) & 2)?"*":"")
        }
    
    }

}

Chce wgrac sobie file_watcher który zapobiegnie włamaniu ruskim hackiem i podczas kompilacji wywala mi blad:
 

Warning: Tag mismatch on line 91
Warning: Tag mismatch on line 91
Warning: Tag mismatch on line 109
Warning: Tag mismatch on line 109
4 Warnings.
Done.

Jak to poprawic? Te linijki to:

91:

    ArrayPushCell(aRuleType,((file[0]==42) + 2*(file[strlen(file)-1]==42)) )        //Yep 42

109

            console_print(0,"[%d] %s %s%s%s",i,(ArrayGetCell(aRule,i))?"ACCEPT":"BLOCK",(ArrayGetCell(aRuleType,i) & 1)?"*":"",file,(ArrayGetCell(aRuleType,i) & 2)?"*":"")
Quote

  • +
  • -
dasiek's Photo dasiek 04.08.2013

Automatyczna wiadomość


Ten temat został przeniesiony z forum

Scripting AMXXPluginy

do

Scripting AMXXProblemy
Quote

  • +
  • -
Scorpion Flail's Photo Scorpion Flail 04.08.2013

Plugin mimo tego erroru się kompiluje, ale nie wiem skąd go wziąłeś [zajmuje ponad 5KB]

 

Skorzystaj z tego tematu, w 100% działające łatki, w tym file watcher z orpheu:

 

http://gamehostingtalk.pl/index.php/topic/19024-ochrona-silnika-hlds/

Quote

Fail's Photo Fail 04.08.2013

no tak, lecz tam nie ma .sma tego filewatchera a binarka w zaden sposob nie pomaga bo z ta binarka mi sie wlamali ;P

Quote

  • +
  • -
Scorpion Flail's Photo Scorpion Flail 04.08.2013

Jest to zaufany temat, nie wiem do czego Ci potrzebny plik .sma?

Quote

Fail's Photo Fail 05.08.2013

Ja nie pytam o twoje odczucia i problemy lecz proszę o naprawienie pluginu tak aby nie zawieral błędów.

Quote

  • +
  • -
DarkGL's Photo DarkGL 05.08.2013

#include <amxmodx>
#include <orpheu>

#define PLUGIN "File watcher"
#define VERSION "0.2"
#define AUTHOR "mazdan"

#define f "file_watcher.log"

new Array:aRule
new Array:aFile
new Array:aRuleType

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_srvcmd("fw_add_file","file_add",_,"fw_add_file <ACCEPT | BLOCK> <filename>")
    register_srvcmd("fw_rules","show_rules")
    aRule=ArrayCreate(1,32)
    aRuleType=ArrayCreate(1,32)
    aFile=ArrayCreate(128,32)
    server_cmd("exec filewatcher.cfg")
    OrpheuRegisterHook(OrpheuGetFunction("FS_Open"),"FS_Open", OrpheuHookPre)
}



public OrpheuHookReturn:FS_Open(test[],b[])
{
    if(containi(b,"w")!=-1)
    {
        new rule
        strtolower(test)
        replace_all(test,strlen(test),"/","\")
        new len=strlen(test)
        new count=ArraySize(aFile)
        for(new i;(i<count && !rule);i++)
        {
            new file[128]
            ArrayGetString(aFile,i,file,127)
            switch(ArrayGetCell(aRuleType,i))
            {
                case 0:if(equal(test,file)) rule=i+1
                case 1:if(containi(test,file)==len-strlen(file)) rule=i+1
                case 2:if(containi(test,file)==0) rule=i+1
                case 3:if(containi(test,file)!=-1) rule=i+1
            }
        }
        if(rule)
        {
            if(ArrayGetCell(aRule,--rule))
            {
                log_to_file(f,"Rule [#%d] ACCEPT %s",rule,test)
                return OrpheuIgnored;
            }
            else
            {
                log_to_file(f,"Rule [#%d] BLOCK %s",rule,test)
                return OrpheuSupercede;
            }
        }
        else
        {
            log_to_file(f,"No rule BLOCK %s",test)
            return OrpheuSupercede;
        }
    }
    return OrpheuIgnored;
}


public file_add()
{
    new rule[10]
    new file[128]
    read_argv(1,rule,9)
    read_argv(2,file,127)
    if(!equal(rule,"ACCEPT") && !equal(rule,"BLOCK"))
    {
        log_to_file(f,"RULE ADD ERROR use <ACCEPT | BLOCK>")
        console_print(0,"RULE ADD ERROR use <ACCEPT | BLOCK>")
        return PLUGIN_HANDLED;
    }
    if(strlen(file)<1)
    {
        log_to_file(f,"RULE ADD ERROR ^" ^" to specify filename")
        console_print(0,"RULE ADD ERROR ^" ^" to specify filename")
        return PLUGIN_HANDLED;
    }
    ArrayPushCell(aRule,equal(rule,"ACCEPT"))
    ArrayPushCell(aRuleType,(_:(file[0]==42) + 2*_:(file[strlen(file)-1]==42)) )        //Yep 42
    replace_all(file,127,"*","")
    replace_all(file,127,"/","\")
    ArrayPushString(aFile,file)
    return PLUGIN_HANDLED;
}

public show_rules()
{
    if(!ArraySize(aFile))
        console_print(0,"NO RULES FOUND!")
    else
    {
        new count=ArraySize(aFile)
        for(new i;i<count;i++)
        {
            new file[128]
            ArrayGetString(aFile,i,file,127)
            console_print(0,"[%d] %s %s%s%s",i,(ArrayGetCell(aRule,i))?"ACCEPT":"BLOCK",(ArrayGetCell(aRuleType,i) & 1)?"*":"",file,(ArrayGetCell(aRuleType,i) & 2)?"*":"")
        }
    
    }

}
Chce wgrac sobie file_watcher który zapobiegnie włamaniu ruskim hackiem i podczas kompilacji wywala mi blad:

Warning: Tag mismatch on line 91
Warning: Tag mismatch on line 91
Warning: Tag mismatch on line 109
Warning: Tag mismatch on line 109
4 Warnings.
Done.

a ja tu widzę że kompilacja przebiegła pomyśle nawet masz piękny komunikat Done.

Quote

Fail's Photo Fail 05.08.2013

c294067c334fcb9c09417bab2fe2ec0677556bfe

a w którym miejscu napisałem że kompilacja przebiegła w sposób nie prawidłowy? Napisałem tylko i wyłącznie że chce wyeliminować te błędy (ostrzeżenia).

 

wywala tag mismatch jeszcze tutaj

console_print(0,"[%d] %s %s%s%s",i,(ArrayGetCell(aRule,i))?"ACCEPT":"BLOCK",(ArrayGetCell(aRuleType,i) & 1)?"*":"",file,(ArrayGetCell(aRuleType,i) & 2)?"*":"")

Edited by Fail, 05.08.2013 12:31.
Quote

  • +
  • -
Scorpion Flail's Photo Scorpion Flail 05.08.2013

Mi podczas kompilacji wywalało tylko błąd związany z linijką 91.

Quote