{"id":449,"date":"2011-05-12T12:50:58","date_gmt":"2011-05-12T10:50:58","guid":{"rendered":""},"modified":"2018-11-01T01:06:58","modified_gmt":"2018-11-01T00:06:58","slug":"kamailio-31-text-file-database-dbtext","status":"publish","type":"post","link":"https:\/\/nil.uniza.sk\/en\/kamailio-31-text-file-database-dbtext\/","title":{"rendered":"Kamailio 3.1 with a text file database (DBTEXT)"},"content":{"rendered":"<p>The article describes how to add simple database support for the Kamailio 3.1.0 server. As the database ext files are used. Activities described here are following the basic Kamailio server installation, described in the article&nbsp;<a href=\"https:\/\/nil.uniza.sk\/en\/sip\/kamailio\/installing-kamailio-31-debian-lenny\/\">Installing Kamailio 3.1 on debian lenny<\/a>.<\/p>\n<p>We are trying this as the part of our performance tests.<\/p>\n<p>&nbsp;<\/p>\n<h2>\n\tPreparation of the Kamailio text files<\/h2>\n<p>Well, after some testing, there are at least two ways how to create required text files, do it manually or use kamdbctl. I&#39;ve had worried with the manual way a quite long time, cause there is no information about that, steps are descirbed next. But using the kamdbctl look very comfortable. So if you are looking for simple solution, just jump over the next chapter to kamdbctl part.<\/p>\n<h3>\n\t1. Manual steps required to create dbtext files<\/h3>\n<p>&nbsp;We have to prepare set of text files which will be used as a simple database. I will place a new dbtext dir inside of the default kamailio dir which will host the text files<\/p>\n<pre>\r\ncd \/etc\/kamailio\r\nmkdir dbtext\r\n<\/pre>\n<p>Now we have to create text file named <strong>version <\/strong>:<\/p>\n<pre>\r\ncd dbtext\r\nvim version\r\n<\/pre>\n<p>and write there following lines, so the content of the version file look:<\/p>\n<pre>\r\ntable_name(str) table_version(int)\r\nsubscriber:6\r\nlocation:6\r\naliases:6\r\n<\/pre>\n<p>number should be, at least for subscriber line, equal to six, because than error message about bad subscriber version table is returned.<\/p>\n<p>Now we create the text file named subscriber, which will host user definitions with passwords<\/p>\n<pre>\r\nvim subscriber\r\n<\/pre>\n<p>and write user accounts, in my case for users jan and palo:<\/p>\n<pre>\r\nusername(str) password(str) ha1(str) domain(str) ha1b(str) rpid(str)\r\njan:pass1:xxx:jan.sk:xxx:ZZZZ\r\npalo:pass2:xxx:palo.sk:xxx:ZZZZ\r\n<\/pre>\n<h4>\n\tTesting and problems<\/h4>\n<p>1) Configuration is ok, auth db is configured, but no <em><strong>version <\/strong><\/em>file exist<\/p>\n<pre>\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: db_text [dbt_lib.c:307]: could not load database from file [version]\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: db_text [dbt_base.c:203]: table version does not exist!\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: &lt;core&gt; [db.c:366]: error in db_query\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: &lt;core&gt; [db.c:405]: querying version for table subscriber\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: auth_db [authdb_mod.c:252]: error during table version check.\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:436\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:443\r\nMay 13 14:09:01 pstest \/usr\/sbin\/kamailio[29068]: ERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:489\r\n<\/pre>\n<p>2) Configuration is ok, auth db is configured, but bad subscriber table version is defined inside of the <em><strong>version <\/strong><\/em>file<\/p>\n<pre>\r\nMay 13 14:16:58 pstest \/usr\/sbin\/kamailio[29111]: ERROR: &lt;core&gt; [db.c:408]: invalid version 3 for table subscriber found, expected 6 (check table structure and table &quot;version&quot;)\r\nMay 13 14:16:58 pstest \/usr\/sbin\/kamailio[29111]: ERROR: auth_db [authdb_mod.c:252]: error during table version check.\r\nMay 13 14:16:58 pstest \/usr\/sbin\/kamailio[29111]: ERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:436\r\nMay 13 14:16:58 pstest \/usr\/sbin\/kamailio[29111]: ERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:443\r\nMay 13 14:16:58 pstest \/usr\/sbin\/kamailio[29111]: ERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:489\r\n<\/pre>\n<p>setup subcriber version to six<\/p>\n<p>3) no subscriber file for an user, solution create a subscriber file with correct user<\/p>\n<pre>\r\nMay 13 14:18:29 pstest \/usr\/sbin\/kamailio[29158]: ERROR: db_text [dbt_lib.c:307]: could not load database from file [subscriber]\r\nMay 13 14:18:29 pstest \/usr\/sbin\/kamailio[29158]: ERROR: db_text [dbt_base.c:203]: table subscriber does not exist!\r\nMay 13 14:18:29 pstest \/usr\/sbin\/kamailio[29158]: ERROR: auth_db [authorize.c:99]: failed to query database\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3>\n\t2. Using kamdbctl to generate required DBTEXT files<\/h3>\n<p>We have to specify parameters using of which required dbtext files will be created. Therefore we need to edit the \/etc\/kamailio\/kamctlrc file.<\/p>\n<p>I will add or uncomment following lines. I would like to use dbtext files for some simple testing, so I will do not put all lines which should enable some advanced features. Final version of kamctlrc should look like:<\/p>\n<pre>\r\n# your sip domain\r\nSIP_DOMAIN=ps.sip.uniza.sk\r\n\r\n# specify to use DBTEXT as a DB\r\nDBENGINE=DBTEXT\r\n\r\n# where file will be stored\/generated\r\nDB_PATH=&quot;\/etc\/kamailio\/dbtext&quot;\r\nUSERCOL=&quot;username&quot;\r\n\r\n# this we may uncomment\r\n#INSTALL_EXTRA_TABLES=ask\r\n\r\n# If to install presence related tables.\r\n#INSTALL_PRESENCE_TABLES=ask\r\n\r\n# Kamailio standard modules\r\nSTANDARD_MODULES=&quot;standard acc lcr domain group permissions registrar usrloc msilo\r\n                   alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher\r\n                   dialplan&quot;\r\n# Kamailio extra modules\r\n\r\n#EXTRA_MODULES=&quot;imc cpl siptrace domainpolicy carrierroute userblacklist htable purple&quot;\r\n\r\n## type of aliases used: DB - database aliases; UL - usrloc aliases\r\n## - default: none\r\nALIASES_TYPE=&quot;DB&quot;\r\n\r\n## control engine: FIFO or UNIXSOCK\r\n## - default FIFO\r\nCTLENGINE=&quot;FIFO&quot;\r\n\r\n## path to FIFO file\r\n#OSER_FIFO=&quot;FIFO&quot;\r\nOSER_FIFO=&#39;\/tmp\/kamailio_fifo&#39;\r\n\r\n## verbose - debug purposes - default &#39;0&#39;\r\nVERBOSE=1\r\n\r\n## do (1) or don&#39;t (0) store plaintext passwords\r\n## in the subscriber table - default &#39;1&#39;\r\nSTORE_PLAINTEXT_PW=0\r\n\r\n## OPENSER START Options\r\n## PID file path - default is: \/var\/run\/kamailio.pid\r\nPID_FILE=\/var\/run\/kamailio.pid\r\n\r\n<\/pre>\n<p>and now run <strong>kamdbctl create<\/strong>, which generate required files<\/p>\n<pre>\r\npstest:\/etc\/kamailio# <strong><span>kamdbctl create<\/span><\/strong>\r\ndatabase engine &#39;dbtext&#39; loaded\r\nINFO: creating DBTEXT tables at: \/etc\/kamailio\/dbtext ...\r\nCreating core table: version\r\nCreating core table: acc\r\nCreating core table: dbaliases\r\nCreating core table: domain\r\nCreating core table: grp\r\nCreating core table: uri\r\nCreating core table: speed_dial\r\nCreating core table: lcr_gw\r\nCreating core table: lcr_rule\r\nCreating core table: lcr_rule_target\r\nCreating core table: pdt\r\nCreating core table: subscriber\r\nCreating core table: location\r\nCreating core table: re_grp\r\nCreating core table: trusted\r\nCreating core table: address\r\nCreating core table: missed_calls\r\nCreating core table: usr_preferences\r\nCreating core table: aliases\r\nCreating core table: silo\r\nCreating core table: dialog\r\nCreating core table: dispatcher\r\nCreating core table: dialplan\r\nInstall presence related tables? (y\/n): n\r\nInstall tables for imc cpl siptrace domainpolicy carrierroute userblacklist htable purple? (y\/n): n\r\n<\/pre>\n<p>Inside of the \/etc\/kamailio\/dbtext folder there are following files<\/p>\n<pre>\r\ncd dbtext\/\r\npstest:\/etc\/kamailio\/dbtext# ls -al\r\ntotal 100\r\ndrwxr-xr-x 2 root root 4096 2011-05-16 09:42 .\r\ndrwxr-xr-x 3 root root 4096 2011-05-16 09:42 ..\r\n-rw-r--r-- 1 root root  122 2011-05-16 09:42 acc\r\n-rw-r--r-- 1 root root   76 2011-05-16 09:42 address\r\n-rw-r--r-- 1 root root  254 2011-05-16 09:42 aliases\r\n-rw-r--r-- 1 root root   90 2011-05-16 09:42 dbaliases\r\n-rw-r--r-- 1 root root  415 2011-05-16 09:42 dialog\r\n-rw-r--r-- 1 root root  128 2011-05-16 09:42 dialplan\r\n-rw-r--r-- 1 root root  104 2011-05-16 09:42 dispatcher\r\n-rw-r--r-- 1 root root   48 2011-05-16 09:42 domain\r\n-rw-r--r-- 1 root root   77 2011-05-16 09:42 grp\r\n-rw-r--r-- 1 root root  237 2011-05-16 09:42 lcr_gw\r\n-rw-r--r-- 1 root root  105 2011-05-16 09:42 lcr_rule\r\n-rw-r--r-- 1 root root   94 2011-05-16 09:42 lcr_rule_target\r\n-rw-r--r-- 1 root root  254 2011-05-16 09:42 location\r\n-rw-r--r-- 1 root root  122 2011-05-16 09:42 missed_calls\r\n-rw-r--r-- 1 root root   60 2011-05-16 09:42 pdt\r\n-rw-r--r-- 1 root root   44 2011-05-16 09:42 re_grp\r\n-rw-r--r-- 1 root root  149 2011-05-16 09:42 silo\r\n-rw-r--r-- 1 root root  148 2011-05-16 09:42 speed_dial\r\n-rw-r--r-- 1 root root  128 2011-05-16 09:42 subscriber\r\n-rw-r--r-- 1 root root   86 2011-05-16 09:42 trusted\r\n-rw-r--r-- 1 root root   82 2011-05-16 09:42 uri\r\n-rw-r--r-- 1 root root  120 2011-05-16 09:42 usr_preferences\r\n-rw-r--r-- 1 root root  942 2011-05-16 09:42 versio<\/pre>\n<p>Do not forget restart your kamailio server.<\/p>\n<h4>\n\tProblem:<\/h4>\n<p>After restart of the kamailio, its process is not running, and there are some error messages:<\/p>\n<pre>\r\nERROR: db_text [dbt_lib.c:307]: could not load database from file [version]\r\nERROR: db_text [dbt_base.c:203]: table version does not exist!\r\nERROR: &lt;core&gt; [db.c:366]: error in db_query\r\nERROR: &lt;core&gt; [db.c:405]: querying version for table subscriber\r\nERROR: auth_db [authdb_mod.c:252]: error during table version check.\r\nERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:436\r\nERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:443\r\nERROR: &lt;core&gt; [route.c:1161]: fixing failed (code=-1) at cfg:\/etc\/kamailio\/kamailio.cfg:489\r\n<\/pre>\n<p>&nbsp;So, open version file (\/etc\/kamailio\/dbtext), and there are lines, which does not comform with the rest of file (yellow)<\/p>\n<pre>\r\ntable_name(string) table_version(int)\r\nacc:4\r\nactive_watchers:9\r\naddress:4\r\naliases:1004\r\ncarrierfailureroute:2\r\ncarrier_name:1\r\ncarrierroute:3\r\ncpl:1\r\ndbaliases:1\r\ndialog:5\r\ndialplan:1\r\ndispatcher:4\r\ndomain:1\r\ndomain_name:1\r\ndomainpolicy:2\r\ndr_gateways:3\r\ndr_groups:2\r\ndr_gw_lists:1\r\ndr_rules:3\r\nglobalblacklist:1\r\ngrp:2\r\n<span>id(int,auto) lcr_id(int) gw_name(string) grp_id(int) ip_addr(string) hostname(string,null) port(int,null) uri_scheme(int,null) transport(int,null) strip(int,null) tag(string,null) weight(int,null) flags(int) defunct(int,null) <\/span>htable:1\r\nimc_members:1\r\nimc_rooms:1\r\n<span>id(int,auto) lcr_id(int) prefix(string,null) from_uri(string,null) grp_id(int) priority(int) <\/span>lcr_gw:1\r\nlcr_rule:1\r\nlcr_rule_target:1\r\nlocation:1004\r\nmatrix:1\r\nmissed_calls:3\r\nmtree:1\r\npdt:1\r\npresentity:3\r\npua:6\r\npurplemap:1\r\nre_grp:1\r\nrls_presentity:0\r\nrls_watchers:1\r\nsilo:5\r\nsip_trace:2\r\nspeed_dial:2\r\nsubscriber:6\r\ntrusted:5\r\nuacreg:1\r\n<\/pre>\n<p>so delete them manually and restart kamailio server, errors should disappear.<\/p>\n<p>&nbsp;<\/p>\n<h3>\n\t&nbsp;Adding a new user<\/h3>\n<p>Now we should be able to use kamctl command to create, delete and modify users of our system as we usually do when Mysql is used. So I will create a user with name palo and its password with:<\/p>\n<pre>\r\nkamctl add palo passwd<\/pre>\n<h4>\n\tProblem<\/h4>\n<p>After running kamctl tool, there a new problem appear:<\/p>\n<pre>\r\nkamctl add palo passwd\r\ndatabase engine &#39;DBTEXT&#39; loaded\r\nControl engine &#39;FIFO&#39; loaded\r\n<span>is_user: user counter=\/usr\/share\/kamailio\/dbtext\/openser is not a directory INFO: user &#39;palo&#39; already exists <\/span><\/pre>\n<p>tool is pointing to some old, openser folder (\/usr\/share\/kamailio\/dbtext\/openser) which is probably successor from openser and which, of course does exists in kamailio, and there is INFO telling us that the user already exist, which is not true.<\/p>\n<p>So make a symlink of your current folder with text files pointing to missing, but requested folder, in my case:<\/p>\n<pre>\r\n ln -s \/etc\/kamailio\/dbtext\/ \/usr\/share\/kamailio\/dbtext\/openser\r\n<\/pre>\n<p>Now the lines seems ok, but new problems arise, probably therefore that module from openser to kamilio was not updated. If I will add a new user with<\/p>\n<pre>\r\npstest:\/etc\/kamailio\/dbtext# kamctl add jano jano<\/pre>\n<p>a problem is reported that email is missing (openserctl required it before)<\/p>\n<pre>\r\ndatabase engine &#39;DBTEXT&#39; loaded\r\nControl engine &#39;FIFO&#39; loaded\r\nis_user: user counter=0\r\ncheck_db_alias: alias counter=0\r\n<span>email_address cannot be empty or null   <\/span>\r\nERROR: introducing the new user &#39;jano&#39; to the database failed\r\n<\/pre>\n<p>and if I will add email address, kamctl does not understand, because this field the kamctl does not use anymore<\/p>\n<pre>\r\npstest:\/etc\/kamailio\/dbtext# kamctl add jano jano jano@jano\r\ndatabase engine &#39;DBTEXT&#39; loaded\r\nControl engine &#39;FIFO&#39; loaded\r\n\r\n -- command &#39;add|passwd|rm&#39; - manage subscribers\r\n\r\n add &lt;username&gt; &lt;password&gt; .......... add a new subscriber (*)\r\n passwd &lt;username&gt; &lt;passwd&gt; ......... change user&#39;s password (*)\r\n rm &lt;username&gt; ...................... delete a user (*)\r\n<\/pre>\n<h5>\n\tSolution<\/h5>\n<p>To solve this problem the code have to be updated probably, but I&#39;m not expect it very soon \ud83d\ude42 And we can not use kamctl utility of course. Anyway, we helped ourself with DBTEXT&nbsp;file sctructure.<\/p>\n<p>We may solve it easily by adding the subscriber data manually. <span>Open <\/span>subscriber file<\/p>\n<pre>\r\nvim \/etc\/kamailio\/dbtext\/subscriber\r\n<\/pre>\n<p>and add line, one for each new user<\/p>\n<pre>\r\n1:jan:jan.sk:password:jan.sk:xxx:xxx:ZZZZ\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h2>\n\t&nbsp;<\/h2>\n<h2>\n\tConfiguration of the Kamailio to use of DB&nbsp;text files<\/h2>\n<h3>\n\tLoading required module<\/h3>\n<p>Main module which allows to work with text file dataase is the DB_TEXT module, whose documentation<a href=\"http:\/\/www.kamailio.org\/docs\/modules\/3.1.x\/modules_k\/db_text.html\"> is here<\/a>. So as the first thing we have to load the module. I&nbsp;will help myself with directives<\/p>\n<p>First I will define<\/p>\n<pre>\r\n#!define WITH_DBTEXT\r\n<\/pre>\n<p>Then we define DBURL&nbsp;parameter which is defining path where the DBTEXT text files are located<\/p>\n<pre>\r\n#!ifdef WITH_DBTEXT\r\n# - database URL - used to connect to database server by modules such\r\n#       as: auth_db, acc, usrloc, a.s.o.\r\n#!define DBURL &quot;text:\/\/\/etc\/kamailio\/dbtext&quot;\r\n#!endif\r\n\r\n<\/pre>\n<p>and I will load main db_text. so module if WITH_DBTEXT&nbsp;is defined<\/p>\n<pre class=\"programlisting\">\r\n#!ifdef WITH_DBTEXT\r\nloadmodule &quot;db_text.so&quot;\r\n#!endif\r\n<\/pre>\n<h3>\n\tModyfing base Kamailio Configuration<\/h3>\n<h4>\n\tModyfying AUTH DB<\/h4>\n<p>Now we configure Kamailio to use text files for authentication, so define (put in or uncomment if it exist)<\/p>\n<pre>\r\n#!define WITH_AUTH<\/pre>\n<p>and then the folloing configuration is<\/p>\n<pre>\r\n#!ifdef WITH_AUTH\r\nmodparam(&quot;auth_db&quot;, &quot;db_url&quot;, DBURL)\r\nmodparam(&quot;auth_db&quot;, &quot;calculate_ha1&quot;, yes)\r\nmodparam(&quot;auth_db&quot;, &quot;password_column&quot;, &quot;password&quot;)\r\nmodparam(&quot;auth_db&quot;, &quot;user_column&quot;, &quot;username&quot;)\r\nmodparam(&quot;auth_db&quot;, &quot;domain_column&quot;, &quot;domain&quot;)\r\nmodparam(&quot;auth_db&quot;, &quot;load_credentials&quot;, &quot;&quot;)\r\nmodparam(&quot;auth_db&quot;, &quot;use_domain&quot;, MULTIDOMAIN)\r\n#!endif\r\n<\/pre>\n<p>We do not have to modify main route logic, as we have defined directive WITH_AUTH and inside of the Kamailio 3.1 is preconfigured config file, which will do the rest, so an user will be asked for authentication during registration and generating Invites.<\/p>\n<h4>\n\tTesting<\/h4>\n<p>Use your favorite client and try to register with good and bad password. It should work! I&nbsp;was sucesfull<\/p>\n<pre>\r\nkamctl ul show\r\ndatabase engine &#39;DBTEXT&#39; loaded\r\nControl engine &#39;FIFO&#39; loaded\r\nentering fifo_cmd ul_dump\r\nDomain:: location table=512 records=1 max_slot=1\r\n        AOR:: jan\r\n                Contact:: sip:jan@158.193.139.235:62250;rinstance=ce646a6fb1eb935a Q=\r\n                        Expires:: 3184\r\n                        Callid:: Yjg2NmM3NjI3M2NkMDllMTY1NjBmMzVjZjUwMjU0NWQ.\r\n                        Cseq:: 2\r\n                        User-agent:: Bria Professional release 2.4 stamp 49381\r\n                        State:: CS_NEW\r\n                        Flags:: 0\r\n                        Cflag:: 0\r\n                        Socket:: udp:158.193.139.51:5060\r\n                        Methods:: 5087\r\nFIFO command was:\r\n:ul_dump:openser_receiver_1534\r\n\r\n<\/pre>\n<h5>\n\t&nbsp;<\/h5>\n<h4>\n\tModyfying USRLOC<\/h4>\n<p>Then we have to configure modules and its parameters. First we will enable usrloc used for user storage<\/p>\n<p>So put or uncomment following line<\/p>\n<pre>\r\n#!define WITH_USRLOCDB\r\n<\/pre>\n<p>and we should find that, if this is defined then following parameters are used (same as we may do when <a href=\"https:\/\/nil.uniza.sk\/en\/sip\/kamailio\/adding-mysql-support-kamailio-31-debian-lenny\/\">MySql is used<\/a>):<\/p>\n<pre>\r\n#!ifdef WITH_USRLOCDB\r\nmodparam(&quot;usrloc&quot;, &quot;db_url&quot;, DBURL)\r\nmodparam(&quot;usrloc&quot;, &quot;db_mode&quot;, 2)\r\n#!endif\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>The article describes how to add simple database support for the Kamailio 3.1.0 server. As the database ext files are used. Activities described here are following the basic Kamailio server installation, described in the article&nbsp;<a href=\"https:\/\/nil-test.kis.fri.uniza.sk\/sip\/kamailio\/installing-kamailio-31-debian-lenny\">Installing Kamailio 3.1 on debian lenny<\/a>.<\/p>\n<p>We are trying this as the part of our performance tests.<\/p>\n<p>&nbsp;<\/p>","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-449","post","type-post","status-publish","format-standard","hentry","category-kamailio-en"],"taxonomy_info":{"category":[{"value":781,"label":"Kamailio"}]},"featured_image_src_large":false,"author_info":{"display_name":"admin","author_link":"https:\/\/nil.uniza.sk\/en\/author\/admin\/"},"comment_info":9,"category_info":[{"term_id":781,"name":"Kamailio","slug":"kamailio-en","term_group":0,"term_taxonomy_id":779,"taxonomy":"category","description":"","parent":771,"count":29,"filter":"raw","cat_ID":781,"category_count":29,"category_description":"","cat_name":"Kamailio","category_nicename":"kamailio-en","category_parent":771}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/posts\/449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/comments?post=449"}],"version-history":[{"count":0,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/posts\/449\/revisions"}],"wp:attachment":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/media?parent=449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/categories?post=449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/tags?post=449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}