Freeswitch can't connect to external sip profile on server - android

I am using port 5060 set on internal profile while the external has 5080.I have created extensions on the server.
I want user to connect sip server using the external profile defined in external.xml i.e
ext_no#XX.YY.ZZ.PP:5080.It says
2013-12-06 05:48:28.740200 [WARNING] sofia_reg.c:2454 Can't find user [ext_no#XX.YY.ZZ.PP] You must define a domain called 'XX.YY.ZZ.PP' in your directory and
add a user with the id="ext_no" attribute and you must configure your
device to use the proper domain in it's authentication credentials.
While it can successfully connect using internal sip profile by just changing the port no,i.e with sip URI:
ext_no#XX.YY.ZZ.PP:5060 and says:
[WARNING] sofia_reg.c:1432 SIP auth challenge (REGISTER) on sofia
profile 'internal' for [ext_no#XX.YY.ZZ.PP] from ip 1.23.169.192
I am on FusionPBX
Please guide.Thanks
Note:i have a valid ext_no and sip uri.Just did not disclose it for security.
To those who voted to close:
This is related to Voip which requires the sip connection to be established between mobile device and server.

The external SIP profile is anonymous and doesn't handle registrations. You would likely want to make a copy of the internal profile say internal-5070 as an example and set the port to 5070. Set the new internal-5070 sip profile with the external sip and rtp IP to use the external IP address. Open up iptables on the local server for SIP port 5070 TCP/UDP and then register the SIP phone to 5070.

Related

Android: Proxy (Relay) Server Requests

I have a server and an android app. My server want to request a destination but with the IP of the android device that my app is running on. So I need to proxy the requests (relay them) in my app so the destination could see the client's IP but the server. You can see my explanation in the picture:
How can I do this in my app?
Yes this could be done but not just with relays; you also need to port forwarding mechanism in between. Here is how I would try to do this:
Local portforward the requests of the server onto a dedicated port on your android device and then from their call the Destination server via your relay mechanism which could be fulfilled very succicntly by LittleProxy like solution.

Android VOIP - Building an app for audio and video calls

I have to develop a mobile app with audio and video functionality. I browsed the web, I found out I need a SIP server. An SIP server does it works like Apache for web apps?
I also found this :
public SipProfile mSipProfile = null;
...
SipProfile.Builder builder = new SipProfile.Builder(username, domain);
builder.setPassword(password);
mSipProfile = builder.build();
But then at which point in my project I should tell that username = xxxx and domain = yyyy? Actually I cannot see the flow clearly it is starting from where and ending where..
Do you guys have a tutorial that I can follow?
A SIP server is the main component of an IP PBX, and mainly deals with the setup of all SIP calls in the network. A SIP server is also referred to as a SIP Proxy or a Registrar. Although the SIP server is the most important part of the SIP based phone system, it only handles call setup and call tear down. It does not actually transmit or receive any audio. This is done by the media server in RTP.
There are some widely used free & open source SIP servers like Asterisk, FreeSWITCH & penSIPS etc.
You can check here for list of SIP servers
You need to create SIP account or user on SIP server. Client will register to that SIP server using that SIP account with username & password.
Domain is basically SIP server's DNS hostname or IP address.
After registration to SIP server, client can make & receive audio or video calls.
Checkout here for SIP Demo app in android

Accessing node.js server on my local system using android app

I have a node.js server running on my local system which interacts with postgresql in the same system to fetch and save data. I want to access node.js server from my android app to save and fetch data from postresql. The problem is my app is not able to connect to localhost. As localhost for my phone is different from my local system and if I am providing my system's IP address then also its refusing the connection.
I made server listen to hostname '0.0.0.0'. Initially I was not providing any hostname as argument in server.listen i.e it was like
server.listen('portnumber') which I changed to
server.listen('portnumber', '0.0.0.0');
if you are using android emulator and trying to access the the host machine's
local host use IP address : 10.0.2.2
for genymotion use IP address: 10.0.2.3
this should allow you to access the host machine's local host, but you will have to change this IP address to local IP address when running app on a device and connected to same network, to access from other network you need to open port(port forwarding I guess) in your router and talk ask your ISP to do the same.
here's a link to similar question : here

Connect Android SIP to OfficeSip server

I am developing an Android SIP client. I'd like to test it against OfficeSip server. So I have set up the officeSip server locally and I can connect to it via officeSIP messenger (the client).
The messenger requires this data to login:
List item
addr: username#server_domain
username: username
password: password
protocol: protocol
server address: server address
However, when trying to do the same in Android, its SipProfile.Builder has a bit different parameters. Of note are the following:
public SipProfile.Builder (String username, String serverDomain)
public SipProfile.Builder setOutboundProxy (String outboundProxy)
There doesn't seem to be a server address available.
I have tried the following for serverDomain parameter:
user#server_domain/server_ip
server_domain/server_ip
server_domain#server_ip
many other combinations
However, I'm either getting connection error (when # is used) or registration failed event (when / is used with server IP after the /). Error codes are -4 (When some error occurs on the device, possibly due to a bug) first, immediately followed by -9 (The client is in a transaction and cannot initiate a new one)
How can I connect to OfficeSIP using Android SIP client?
Edit:
I managed to establish communication with CSipSimpleClient which uses a custom SIP stack. It only required server name (equal to server's domain), username and password.
I'm not sure.. but '#' and '/' are not allowed and SipProfile.Builder will make a URI, e.g. "username#serverDomain(or ip)", with username and serverDomain parameters.
Just try to set like this.. ("user1", "test.com"), ("user1", "1.1.1.1").
API description says "the SIP server domain; if the network address is different from the domain, use setOutboundProxy(String) to set server address" about serverDomain.
Turns out, Android SIP stack is quite immature and finnicky.
Ultimately I was able to connect by specifying both server hostname and server proxy.
Also, if server domain differs from computer name server is running on, you WILL have issues connecting. Domain must match either IP address or computer name, but they must match in order to connect via Android SIP client.
I have successfully connected to OfficeSIP with the android SIP API.
Download the SipDemo here
In WalkieTalkieActivity.java I modified the code to be the following:
SipProfile.Builder builder = new SipProfile.Builder("test", "officesip.local");
builder.setPassword("test");
builder.setOutboundProxy("192.168.10.191");
builder.setAutoRegistration(true);
me = builder.build();
In OfficeSIP test is the user with a password also test. The outbound proxy is the IP of the computer or server hosting OfficeSIP and officesip.local is the SIP domain name, which can be found in OfficeSIP under ther settings tab.
To test this I made a second account on OfficeSIP and logged into that account using Sipdroid. From there I called the SipDemo app running on a second phone and it worked.

Server with dynamic IP

I am making an app that uses socket programming. Client side is programmed using android and server side using Java. The IP address of the server may change and the IP address has to be kept secure and private.
I do not want the users to install the app again and again when the IP of server changes.
You can use domain for your server . your domain is static and not change dynamically.
for example your domain is : yoursystem.com
now your server ip is : xxx.xxx.xxx.xxx
and tomarow your ip change to yyy.yyy.yyy.yyy
but your domain address is static and user can conect to your domain.
if your privacy is important you can improve your privacy by set token for your user and ...

Categories

Resources