[OpenSIPS-Users] IP authentication
michel freiha
michofr at gmail.com
Thu Jan 15 13:23:02 CET 2009
Dear Bogdan,
I have created the address table as you asked me in the previous email then
I added the following to the opensips.cfg file:
route{
if (!allow_address()) {
sl_send_reply("403", "Forbidden");
xlog("$si");
xlog("KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
};
I added only IP address to the address table...When trying to restart
OpenSIps I got the below error:
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/db_mysql.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/sl.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/tm.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:register_module: register_pv:
tm
Jan 15 14:17:56 registrar1 opensips: DBG:core:pv_add_extra: extra items list
is not initialized
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/rr.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/maxfwd.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/usrloc.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/registrar.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/textops.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/mi_fifo.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/uri_db.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/uri.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/xlog.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:register_module: register_pv:
xlog
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/acc.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/nathelper.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/permissions.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/auth.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:yyparse: loading module
/usr/local/lib/opensips/modules/auth_db.so
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: mi_fifo
matches module mi_fifo
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: found
<fifo_name> in module mi_fifo [/usr/local/lib/opensips/modules/]
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: rr
matches module rr
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: found
<enable_full_lr> in module rr [/usr/local/lib/opensips/modules/]
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: rr
matches module rr
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: found
<append_fromtag> in module rr [/usr/local/lib/opensips/modules/]
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: registrar
matches module registrar
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: found
<method_filtering> in module registrar [/usr/local/lib/opensips/modules/]
Jan 15 14:17:56 registrar1 opensips: DBG:core:set_mod_param_regex: uri_db
matches module uri_db
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<use_uri_table> in module uri_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: uri_db
matches module uri_db
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_url> in module uri_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<early_media> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<report_ack> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<report_cancels> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<detect_direction> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<failed_transaction_flag> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<log_flag> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<log_missed_flag> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_flag> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: acc
matches module acc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_missed_flag> in module acc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: usrloc
matches module usrloc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_mode> in module usrloc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: usrloc
matches module usrloc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_mode> in module usrloc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: usrloc
matches module usrloc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_url> in module usrloc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: auth_db
matches module auth_db
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<calculate_ha1> in module auth_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: auth_db
matches module auth_db
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<password_column> in module auth_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: auth_db
matches module auth_db
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_url> in module auth_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: auth_db
matches module auth_db
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<load_credentials> in module auth_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: usrloc
matches module usrloc
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: found
<nat_bflag> in module usrloc [/usr/local/lib/opensips/modules/]
Jan 15 14:17:57 registrar1 opensips: DBG:core:set_mod_param_regex: nathelper
matches module nathelper
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<rtpproxy_sock> in module nathelper [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: nathelper
matches module nathelper
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<natping_interval> in module nathelper [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: nathelper
matches module nathelper
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<ping_nated_only> in module nathelper [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: nathelper
matches module nathelper
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<sipping_bflag> in module nathelper [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: nathelper
matches module nathelper
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<sipping_from> in module nathelper [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: registrar
matches module registrar
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<received_avp> in module registrar [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: nathelper
matches module nathelper
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<received_avp> in module nathelper [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex:
permissions matches module permissions
Jan 15 14:17:58 registrar1 opensips: DBG:core:set_mod_param_regex: found
<db_url> in module permissions [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t:
<allow_address> not found
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t:
<allow_address> not found
Jan 15 14:17:58 registrar1 opensips: CRITICAL:core:yyerror: parse error in
config file, line 226, column 20-21: unknown command, missing loadmodule?
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_send_reply>(2) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<xlog>(1) in module xlog [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<xlog>(1) in module xlog [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<mf_process_maxfwd_header>(1) in module maxfwd
[/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_send_reply>(2) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<has_totag>(0) in module uri [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<loose_route>(0) in module rr [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_check_trans>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_relay>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_send_reply>(2) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_check_trans>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_relay>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_check_trans>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:58 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<record_route>(0) in module rr [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<append_hf>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_send_reply>(2) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<www_authorize>(2) in module auth_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<www_challenge>(2) in module auth [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<check_to>(0) in module uri_db [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_send_reply>(2) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<save>(1) in module registrar [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_reply_error>(0) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<xlog>(1) in module xlog [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<lookup>(1) in module registrar [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_newtran>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_reply>(2) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_send_reply>(2) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<is_method>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_on_branch>(1) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_on_reply>(1) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_on_failure>(1) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_relay>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<sl_reply_error>(0) in module sl [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<xlog>(2) in module xlog [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<record_route>(0) in module rr [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<append_hf>(1) in module textops [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<xlog>(1) in module xlog [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<xlog>(1) in module xlog [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: DBG:core:find_cmd_export_t: found
<t_was_cancelled>(0) in module tm [/usr/local/lib/opensips/modules/]
Jan 15 14:17:59 registrar1 opensips: ERROR:core:main: bad config file (1
errors)
Jan 15 14:17:59 registrar1 opensips: DBG:xlog:destroy: destroy module...
Jan 15 14:17:59 registrar1 opensips: DBG:tm:tm_shutdown: tm_shutdown : start
Jan 15 14:17:59 registrar1 opensips: DBG:tm:tm_shutdown: emptying hash table
Jan 15 14:17:59 registrar1 opensips: DBG:tm:tm_shutdown: releasing timers
Jan 15 14:17:59 registrar1 opensips: DBG:tm:tm_shutdown: removing semaphores
Jan 15 14:17:59 registrar1 opensips: DBG:tm:tm_shutdown: destroying callback
lists
Jan 15 14:18:00 registrar1 opensips: DBG:tm:tm_shutdown: tm_shutdown : done
Jan 15 14:18:00 registrar1 opensips: DBG:core:shm_mem_destroy:
Thanks for the help
Regards
On Thu, Jan 15, 2009 at 11:51 AM, Bogdan-Andrei Iancu <
bogdan at voice-system.ro> wrote:
> Hi Michel,
>
> So, the table must look like:
>
> CREATE TABLE address (
> id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
> grp SMALLINT(5) UNSIGNED DEFAULT 0 NOT NULL,
> ip_addr VARCHAR(15) NOT NULL,
> mask TINYINT DEFAULT 32 NOT NULL,
> port SMALLINT(5) UNSIGNED DEFAULT 0 NOT NULL
> ) ENGINE=MyISAM;
>
>
> so, mask is integer after all :). What you should put in db (to test) is:
> insert into address (ip_addr) values ("xxx.xxx.xxx.xxx");
>
> and check the allow_address() then.
>
> Let me know if there are errors at startup or at runtime.
>
> Regards,
> Bogdan
>
> michel freiha wrote:
>
>> Dear Bogdan,
>>
>> I tried allow_address() and it returns an error when restarting
>> OpenSIPS..Even I tried to change the mask field type from tinit to varchar
>> but if I put a value inside it like 26 and restart OpenSIPS I even get an
>> error
>>
>> Regards
>>
>> Regards
>>
>> On Thu, Jan 15, 2009 at 11:20 AM, Bogdan-Andrei Iancu <
>> bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>>
>> Hi Michel,
>>
>> Have you tried to use the simple format of the command ?
>>
>> Like allow_address() ?
>>
>> Also not that after filling in the table, you have either to
>> restart, either to issue the "address_reload" MI command.
>>
>> Regards,
>> Bogdan
>>
>> michel freiha wrote:
>>
>> Dear Sir,
>> I'm trying to authenticate users based on their IP addresses
>> and not based on username and password...I did the following
>> in the config file:
>>
>> 1- I added loadmodule "permissions.so"
>> 2- modparam("permissions", "db_url",
>> "mysql://opensips:123456@MySQL_Database_IP/Database_name")
>> 3- I added the below function in route function
>>
>> if (!allow_address("1", "$si", "$sp")) {
>> sl_send_reply("403", "Forbidden");
>>
>> xlog("KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
>> };
>> 4- on the database side I have created the address table then
>> add an entry with the below values:
>>
>> grp=1 ip_address=My Softphone IP address mask=24 Port=0
>>
>> The problem is that I'm getting Forbidden in case my IP exist
>> in address table or not...
>> Does someone has any idea about what could be the issue here?
>>
>> Thanks a lot for the help
>>
>> Regards
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20090115/66776180/attachment-0003.htm
More information about the Users
mailing list