Skip to content

Instantly share code, notes, and snippets.

View moteus's full-sized avatar

Alexey Melnichuk moteus

View GitHub Profile

ELF

ELF Header

The first portion of any ELF file is the ELF header. This generally provides offsets to other headers (program headers and section headers) within an ELF.

typedef struct {
  unsigned char e_ident[EI_NIDENT];
 uint16_t e_type;
@moteus
moteus / multi_request.lua
Last active April 13, 2018 07:26
Run multiple curl requests from coroutines simultaneously
local cURL = require "cURL.safe"
local json = require "cjson.safe"
-------------------------------------------------------------------
local MultiRequests = {} do
MultiRequests.__index = MultiRequests
function MultiRequests.new(...)
local self = setmetatable({}, MultiRequests)
return self:__init(...)
@moteus
moteus / registry.lua
Created October 19, 2017 09:04
Implementation registry in lua
local Registry = {} do
Registry.__index = Registry
function Registry:new()
return setmetatable({_r = {0}}, {__index = self})
end
function Registry:ref(value)
local registry = self._r
@moteus
moteus / att_xfer_mon.lua
Last active August 10, 2017 13:23
Monitor transfer channels on FS and put info to memcache to be able do intercep
-- This service can be run as standalone application
-- or from FreeSWITCH using `luarun att_xfer_mon.lua`
--------------------------------------------------------
local EventService = require "uv_event_service"
local Memcached = require "lluv.memcached"
local service_name = 'att_xfer'
local service = EventService.new(service_name, { '127.0.0.1', '8021', 'ClueCon',
@moteus
moteus / sms_bcd2gsm.lua
Last active May 1, 2017 08:35
API command to fix ALPHANUMERIC source numbers received from mod_gsmopen
-- API command to fix ALPHANUMERIC source numbers received from mod_gsmopen
-- Usage: <action application="set" data="from=${lua(sms_bcd2gsm.lua ${from})}" />
-- !! Do not forget that for resending uses not `from` header but `from_full`.
--
-- https://github.com/moteus/lua-tpdu
--
assert(stream, 'this is API command')
local tut = require "tpdu.utils"
--! @usage
-- forward incoming message to some extension
-- <action application="lua" data="sms_forward.lua '${from}' '100@my.domain.com'" />
local function escape(s)
s = string.gsub(s, '\\', '\\\\')
s = string.gsub(s, '|', '\\|')
return s
end
@moteus
moteus / call_forward_api.lua
Last active April 18, 2017 13:35
FusionPBX. Use Lua code to build CF dialplan from Web UI
local Database = require "resources.functions.database"
local route_to_bridge = require "resources.functions.route_to_bridge"
local json = require "resources.functions.lunajson"
local function decode_value(v)
return (string.gsub(v, [[\u00(%x%x)]], {
['22'] = '"';
['27'] = "'";
['26'] = "&";
['3C'] = "<"; ['3c'] = "<";
@moteus
moteus / pgmoon.lluv.lua
Last active June 23, 2017 08:05
Wrapper class to use lluv socket class with pgmoon
-- socket = require "pgmoon.lluv".Socket.new()
local ut = require "lluv.utils"
local socket = require "lluv.luasocket"
local flatten = require("pgmoon.util").flatten
local function Super(class)
return function(self, m, ...)
if class.__base and class.__base[m] then
return class.__base[m](self, ...)
local curl = require "cURL"
local lom = require "lxp.lom"
local GISMETEO_CODES = {
['7495'] = '27612_1';
['7496'] = '27612_1';
['7499'] = '27612_1';
}
local gismeteo_base_url = "http://informer.gismeteo.ru/xml/"
@moteus
moteus / native.lua
Last active December 14, 2016 11:49
Database class to works with parameters
--
-- Native backend to FusionPBX database class
--
local log = require "resources.functions.log".database
assert(freeswitch, "Require FreeSWITCH environment")
local param_pattern = "%f[%a%d:][:]([%a][%a%d_]*)"