diff options
| author | Jokler <jokler.contact@gmail.com> | 2018-02-13 15:35:03 +0100 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2018-02-13 15:35:03 +0100 |
| commit | 048f5f048456b4537b1067273b89d5192c65fb21 (patch) | |
| tree | 94527759c080e1e0b6f28d4985c41562111e0dd0 /src | |
| parent | 046a0114f0e23be258cbb6834c286153b758ecaf (diff) | |
| download | frippy-048f5f048456b4537b1067273b89d5192c65fb21.tar.gz frippy-048f5f048456b4537b1067273b89d5192c65fb21.zip | |
Add some sandboxing
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/factoids/mod.rs | 6 | ||||
| -rw-r--r-- | src/plugins/factoids/sandbox.lua | 28 |
2 files changed, 30 insertions, 4 deletions
diff --git a/src/plugins/factoids/mod.rs b/src/plugins/factoids/mod.rs index aeb83b0..d67416f 100644 --- a/src/plugins/factoids/mod.rs +++ b/src/plugins/factoids/mod.rs @@ -201,7 +201,7 @@ impl<T: Database> Factoids<T> { factoid }; - server.send_privmsg(&command.target, &value) + server.send_privmsg(&command.target, &value.replace("\n", "|").replace("\r", "")) } } @@ -221,7 +221,7 @@ impl<T: Database> Factoids<T> { let lua = Lua::new(); let globals = lua.globals(); - globals.set("factoid", lua.load(code, Some(name))?)?; + globals.set("factoid", code)?; globals.set("args", args)?; globals.set("input", command.tokens.join(" "))?; globals.set("user", command.source.clone())?; @@ -231,7 +231,7 @@ impl<T: Database> Factoids<T> { lua.exec::<()>(LUA_SANDBOX, Some(name))?; let output: Vec<String> = globals.get::<_, Vec<String>>("output")?; - Ok(output.join("|").replace("\n", "|")) + Ok(output.join("|")) } fn invalid_command(&self, server: &IrcServer, command: &PluginCommand) -> Result<(), IrcError> { diff --git a/src/plugins/factoids/sandbox.lua b/src/plugins/factoids/sandbox.lua index 9b4f52e..4e6b53e 100644 --- a/src/plugins/factoids/sandbox.lua +++ b/src/plugins/factoids/sandbox.lua @@ -1 +1,27 @@ -factoid() +function send(text) + len = #output + if len < 1 then + output = { text } + else + output[len] = output[len] .. text + end +end + +function sendln(text) + sendtoirc(text) + table.insert(output, "") +end + +local env = { print = send, + println = sendln, + args = args, + input = input, + user = user, + channel = channel, + pairs = pairs, + table = table, + string = string, + tostring = tostring, + math = math } + +load(factoid, nil, nil, env)() |
