calandria.server = {
   after_place = function(pos, placer, _itemstack, _pointed)
      local meta = minetest.get_meta(pos)
      -- meta.from_table(calandria.server.make(placer:get_player_name()))
      -- SEGFAULT HERE:
      meta:from_table({hello = "world"})
   end,

   make = function(player)
      local fs = orb.fs.empty()
      orb.fs.seed(orb.fs.proxy(fs, "root", fs), {player})
      return { fs = fs, sessions = {} }
   end,

   exec = function(input, player)
      if(not envs[player]) then return "No account on this server." end

      local out = {}
      envs[player].write = function(x) table.insert(out, #out) end
      orb.shell.exec(fs, envs[player], input)
      return "$ " .. input .. "\n" .. table.concat(out, "\n") .. "\n\n"
   end,

   digiline_action = function(pos, node, channel, msg)
      if(type(msg) == "function") then
         local value = msg()
         if not value.msg then return end
         print("Executing "..value.msg)
         local server = minetest.get_meta(pos):to_table()

         if not server then
            print("No server at position: " ..pos.x..":"..pos.y..":"..pos.z)
            return
         end

         local result = server.exec(value.msg, value.player)
         digiline:receptor_send(pos, digiline.rules.default, channel, result)
      end
   end,
}

minetest.register_node("calandria:server", {
                          description = "server",
                          drawtype = "nodebox",
                          paramtype = "light",
                          paramtype2 = 'facedir',
                          node_box = {
                             type = "fixed",
                             fixed = {
                                {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
                             },
                          },
                          tiles =
                             {'cal_server_side.png', 'cal_server_side.png',
                              'cal_server_side.png', 'cal_server_side.png',
                              'cal_server_side.png', 'cal_server_front.png'},
                          groups = {cracky=3,level=1},
                          -- sounds = default.node_sound_stone_defaults(),
                          digiline = {
                             receptor = {},
                             effector = {
                                action = calandria.server.digiline_action
                             },
                          },
                          after_place_node = calandria.server.after_place
                          -- TODO: remove on destruct
})

Generated by Phil Hagelberg using scpaste at Mon May 25 19:10:09 2015. ICT. (original)