[Q] Server to communicate with Android phones - Networking

Me and my buddies are doing an independent study at our university this winter. It will basically consist of designing and implementing an application for android phones. We have an idea, but will need to set up a server to store usernames and passwords. We are all computer science majors, but networking is not our strong point. What do y'all think is the best way to set this server up?
Thanks in advance

lighttpd with memcached .apk's for fast install delivery. 2 second cache (minimum) for server side stuff (such as service status or something)

Related

Musings on XDA II WiFi

I've been running a project on mobile computing at work which obviously means that I get loads of cool toys to play with.
So today I connected my XDA II to a server (via D-Link router) running MS Exchange and MS Sharepoint.
Limited success with Sharepoint, it renders ok but you lose a fair bit of functionality which must be down to advanced IE features not present in the mobile version.
Exchange Web Access worked like a dream though (albeit, a dream where the browser window is too small and the wrong form factor!)
However I was doing 3 things at once and ticked "remember password" when initially logging on to the server and the damned thing just bypassed authentication from then on meaning I couldn't try different accounts.
So to the "does anyone know" bit, Firstly anyone have any ideas about clearing the "remember passwords" nightmare, tried stopping explorer, clearing cache and cookies and even a soft reset with no joy.
The main idea of the project is to give our key mobile workers (mainly our Directors) access to this technology, now I would never suggest that Directors are thick (and some of ours are anything but) however the process for selecting and connecting to networks seems bloody fiddly at best, anyone know of any decent software that makes this a bit more intuitive?
Gonna try and make time to try my BTOpenzone account out with the XDA II tomorrow, any thoughts?
For the auto authenticate part, why not just change your account password on your exchange server, youll get a refused connection and asked for password and username again.
I've tried owa on the xda2 and found it very unwield, so I use imap into pocket outlook instead check it just like you would pop3, infact you could use pop3 aswell / instead.
Forgot to mention, have you had a play with remote admin using the xda yet? I'm looking for a better way than the admin website (same problem as owa)
Good idea on the password, owa is being as we have an existing (large) corporate Exchange set up and want a relatively seamless mobile experience. When using notebooks etc away from the office we'll be using OWA so using it on the Xda's too makes it easier for our high powered thinkers!
Might just have to get some iPaq 4150's for the landscape mode while waiting for Xda III!
Not touched remote admin and probably not likely to, the final system will likely be installed in a fully supported datacentre.
Sounds like a fun setup, love to get my hands on a rig like that (probably bring the whole system down!!! LOL).
I think that owa uses editable html pages, so you could maybe create a more pocket pc friendly layout, I would think that you could redirect clients by browser type so that pc users got the standard layout, and xda's got the modified one.
I've found that if you keep the possible number of connection options down the auto select works pretty well.

directpush protocol questions (exchange replacement possible?)

I am using mail2web free service to have my mail pushed to my WM5 device, but I don't like the idea of forwarding my private email to a company I don't know and I don't trust.
Normally I have my email at a home mail server running linux, and I was wondering if there's any open/free solution compatible with directpush technology to replace the need for an exchange 2003 server.
If it does not exist (i have been searching and couldn't find it), what is preventing someone of writing a free replacement? patent issues? authentication issues? I haven't sniffed the protocol yet, but I think it's impossible that no one has thought about it before... wouldn't you like to have your home imap server pushing your inbox to your PocketPC phone? If the protocol is not very obscure it should be easy to write a daemon that does it...
any thoughts or experiences?
Kerio Mail Server has the push compatibility.
Not free though, but it is an alternative to Exchange.
Their latest beta supports it. I reported a bug to them re: contacts getting corrupted but they say they fixed that in the latest build.
Can't retest now since that server is at another site I won't be visiting for a while.
Hmm the directpush "protocol" is pretty trivial it shouldn't be impossible to implement an open alternative.
I installed the latest Kerio MailServer yesterday. It works great!
Especially nice is that it runs on XP as well as Linux. Too bad about the price!
pof, have you had the chance to sniff the protocol?
not yet ivorh, been too busy with many other things, but this is still on the queue
sniffed
Heh, got bored so I setup an exchange account and sniffed the packets.
I'll go through them and post some details when I get a chance.
great ivorh!
Can you attach a capture in pcap format?
update and thoughts
Pof,
Hmm, ok a bit more thinking and digging and I'm not sure implementing an open alternative directly is that useful. Let me explain why:
The direct push only works with the outlook exchange active sync. When the device gets a "direct push" byte, it triggers a sync with exchange - the functionality is tightly bound together, and as far as I can tell you cant dip in and get it to do something else. So to get it working you would need a server providing the exchange http interface. This wouldn't be impossible but would need a lot of effort for little benefit.
I took a look at the open-exchange but that doesn't seem like an ideal solution since it would require a completely different server installed rather than IMAP or POP and as far as I can tell the Outlook connector isn't one of the open-source components anyway.
Now what I'm currently thinking would be a neat workaround would be to implement a custom "direct-push" to basically do exactly the same, have a client app on the device open an http connection to a server running, er, "OpenPush" if you like... use exactly the same technique of a keep-alive connection and occasional heartbeats, but on a message notification on the client get the client to trigger an IMAP pull.
Now this is where I need some advice.... I haven't done any Windows Mobile development yet, so can anyone tell me what sort of API is available to the messaging app? Can you/how do you trigger a mail pull? (oh someone please tell me it's not the same horrible old MAPI interface??).
PS I've just been capturing the data using a simple http proxy actually, I'll make some samples and upload them with descriptions.
Cheers,
Ivor.
http://www.ivor.it
Hi pof,
try funambol. It was formerly known as Sync4j. I once found it when I searched a complete sync solution that I could implement in the mailserver of my company. We are using kolab so I only tried the old Sync4j cause there is a kolab connector available for v2.3.
v3.0 implements (real) Push-Mail. Microsoft Active Push works with a http connection that is opened by the client. Funambol Push-Mail connects to a port the client opens. I didn't want to test any further cause I'm using a Wapflat and thus only get an internal IP and have to use a proxy.
http://www.funambol.com/opensource/
Perhaps this is what you are searching for
What I forgot to say: For funambol you install a java program on your phone wich will insert the received mails in your Pocket Outlook
Yay!
Pof,
Ha! Ok I've whipped up a version 0.0.0 of OpenPush. and it works rather nicely!
Basically it consists of two parts one is an app that runs on the mobile and operates in the same manner as DirectPush. It opens up a socket connection to the server and waits for a notification byte. If it recieves a byte it kicks off a mail retrieval.
The other is a daemon that runs on the server and watches for a change in the users mailbox if it changes (i.e. a mail has arrived) then it pops a byte down the socket.
It just needs finishing now...
Currently the daemon is just an app that listens on a dedicated socket. I plan on turning it into a mod_perl module and using http keep-alive in the same fashion as directpush.
Regards,
Ivor
ivorh, that sounds cool!!
I had a look at funambol but seems too 'bloated' for my needs, I think your OpenPush will be more tight to what I was looking for, so if you want a beta tester just send a link to it
Is there any specific server configuration? I am running a Gentoo server with courier-imap, sendmail and apache2.
Any chance you could extend the daemon so other programs can tie into your new-item notification? It would be cool to write a program that can keep files synchronized over-the-air with a desktop machine using push sychronization.
Pof,
Yeah it's just a prototype at the moment. So I need to write it properly next. At the moment the requirements are simply "perl". It's independent of mail system, it simply monitors a directory/file you give it for changes.
I'm going to write it to be a mod_perl module for various reasons, so the requirements will be just apache and mod_perl.
I'll hack some more tonight and try and get a 0.0.1 ready.
aatreya,
Well I'll keep it simple for now and just doing one job well.
Sound interesting to me.
I am new to this. Pardon me for some questions.
Do I need to buy a server at home?
This server can be any OS?
I am really happy to see some people trying to do just about the same I intended to. Today I started experimenting with Open-Xchange. I also have a Gentoo server that provides an ebuild for Open-Xchange, but after a bit of browsing it just seems like the thing MS Exchange and OX have in common is the similarity of their names. So installing OX and doing all the Exchange stuff with it does not seem to be an option.
So I looked into Funambol - sort of again. About a year ago I already tried to get Sync4J running to sync my SyncML phone. I did not succeed, but that just makes me eager to try it harder this time.
I also have to use a Proxy-Server for my GPRS connection but I want to have it working via WLAN, too, hence without proxy and the whole tunneling disco.
PS: Ivor, I am glad to meet You once again. When our roads crossed the last time, You just figured out how to get the CLE266 MPEG2 stuff working, respect!
A very rough pre-alpha version should be ready this weekend. I can only apologise in advance for the quality of my WM5 app!
But it's "working for me".
CWKJ,
At the moment the "server" is a simply perl app that watches for changes to a directory or file so its pretty portable. I run it on linux since that's what my mailserver is on.
As for needing a server at home... well its entirely up to you, really you want the server running wherever your mail is retrieved from.
If the app/system gets a bit more polished and advanced you might even find independent ISP's willing to add it as a service.
rabinath,
Heh! Small world.
I'd also like to be considered for Beta testing when available,
I run Ubuntu 5.10 Server at home, hosting 5 domains for myself, and would Love to not have to forward them through mail2web anymore as I don't like to reply because it will go through Mail2Web. I know I can create a separate "account" in Pocket Outlook but you can only have 5. I need more than that...
with direct push over the o2 wap proxy all https conections are closed after 2 min. this is becausse all 2 minutes a new sync is needed. This eats much battery. So why is it nnot possible to mak e a ppc client that just sends the current ip adsress to the client on the server. and the server just push the email to the known ip adress. The client on ppc just has to send a new ip in case it changes. this wouldt be much better for battery life.
Thats the reason Exchange-Activesync works the way that it does. The server sends out a text message that is handled at the system level on the PPC, and this is basically an instruction to sync with the server. No unneeded traffic just to check if there is anything new.
Most Celllar service providers are using NAT technology so reporting your IP address to a server and telling it to make a connection to that IP, would just be telling the server to connect to the "gateway" back into the Cellular network. A text message sent to what is called the "SMTP Gateway" for each service provider will get to the phone no matter if the phones IP changes.

[Q] Domains/Networks

Just thought of a new question. I use excel a ton and frequently need to go to my bosses office to ask questions about certain things. If I were logged onto the companies wifi, would I be able to optain access to the shared drives my NT account (assuming somehow I login from my Xoom) to manually bring the document to my boss, and have the work be easily done in one place???
The quickest way might be to install one of the remote desktop clients out there. Even on the 4.3’’ screen of the Evo, it can be a real pain to use, but I suspect a MUCH more pleasant experience on this.
By tomorrow afternoon, it is my intent to have my xoom talking to a dedicated Win7 vm that lives on one of my servers. Hopefully, I’ll be able to get to a point where creds are saved and I end up with a 1-click process to access the enterprise. Im REALLY banking on the idea that rdp will be usable on this larger screen.
I know that’s not exactly what you were looking for, but I’d be willing to bet that somebody is / has worked on a file browser that will see network shares and store credentials. I will certainly look around.
AndyMan386 said:
Just thought of a new question. I use excel a ton and frequently need to go to my bosses office to ask questions about certain things. If I were logged onto the companies wifi, would I be able to optain access to the shared drives my NT account (assuming somehow I login from my Xoom) to manually bring the document to my boss, and have the work be easily done in one place???
Click to expand...
Click to collapse
I can do this at home now with my Android phone using AndroXplorer on wifi. Just need to create a shortcut to a share on my PC using UNC path. Not sure if your company will have any restrictions on WiFi or not and also not sure if that app will work on Honeycomb. But it is definitely possible.

bypass school router blocks

hey, i used to have a way around the school router blocks but i cant seem to remember what it was for the life of me. What it consisted was of an .exe that installed some software that allowed me to browse freely. I vaguely remember that the software consisted of a icon on the taskbar that was kinda an earth with fire around it....maybe?
if you have any other good router/server bypasses then please let me know. .exe file executions are blocked everywhere except in the technology building at school. Preferably i would like to have something only requiring a flash drive or it can be done within IE or Chrome.
Do u mean that you are able to surf the internet but some website, like Facebook for example , are blocked?
yukinok25 said:
Do u mean that you are able to surf the internet but some website, like Facebook for example , are blocked?
Click to expand...
Click to collapse
yes exactly, often they have keywords that they block as well, (such as game, kill, black ops, etc). maybe a proxy would work? we used to have a couple good ones but they would eventually block it.
johnston9234 said:
yes exactly, often they have keywords that they block as well, (such as game, kill, black ops, etc). maybe a proxy would work? we used to have a couple good ones but they would eventually block it.
Click to expand...
Click to collapse
yes, a free proxy can be a solution in most cases, here try some in this list first:
http://www.publicproxyservers.com/proxy/list1.html
johnston9234 said:
hey, i used to have a way around the school router blocks but i cant seem to remember what it was for the life of me. What it consisted was of an .exe that installed some software that allowed me to browse freely. I vaguely remember that the software consisted of a icon on the taskbar that was kinda an earth with fire around it....maybe?
if you have any other good router/server bypasses then please let me know. .exe file executions are blocked everywhere except in the technology building at school. Preferably i would like to have something only requiring a flash drive or it can be done within IE or Chrome.
Click to expand...
Click to collapse
To do this would require some form of exe to use a proxy via a specially setup browser, or admin rights to set the system proxy.
You will find that your IT admins will block the proxies you use (I have to block proxies at my work network when we detect them).
If implemented properly (any good professional IT admin should be able to do it right), you will struggle to tunnel out using most systems.
You can't ssh forward if they block non-standard ports, or filter protocols. You can't use SOCKS proxies if they do the same. You can't use web proxies if they use smart URL filtering.
You can try web proxies, but it's an uphill battle. If you find a proxy that works, don't tell your friends, as that usage across multiple accounts flags the URL in some security systems (my users alert me to the latest proxy sites unwittingly )
Finally, you do realise you are probably breaking the acceptable use agreement? Isn't it better to do facebook etc out of school hours? Or use your phone? If you get good at evading, it is easy to remove internet access altogether from an account in most systems. Good luck in tunnelling out when you have zero internet access as your account is null routed
Summary? Try proxies, don't hold your breath, and do you really need to use facebook etc in school? Oh, and for goodness sake, don't run exes on school PCs... If they've not set them up right, you could infect the machines. They prevent EXE execution on most machines for good reason...
pulser_g2 said:
To do this would require some form of exe to use a proxy via a specially setup browser, or admin rights to set the system proxy.
You will find that your IT admins will block the proxies you use (I have to block proxies at my work network when we detect them).
If implemented properly (any good professional IT admin should be able to do it right), you will struggle to tunnel out using most systems.
You can't ssh forward if they block non-standard ports, or filter protocols. You can't use SOCKS proxies if they do the same. You can't use web proxies if they use smart URL filtering.
You can try web proxies, but it's an uphill battle. If you find a proxy that works, don't tell your friends, as that usage across multiple accounts flags the URL in some security systems (my users alert me to the latest proxy sites unwittingly )
Finally, you do realise you are probably breaking the acceptable use agreement? Isn't it better to do facebook etc out of school hours? Or use your phone? If you get good at evading, it is easy to remove internet access altogether from an account in most systems. Good luck in tunnelling out when you have zero internet access as your account is null routed
Summary? Try proxies, don't hold your breath, and do you really need to use facebook etc in school? Oh, and for goodness sake, don't run exes on school PCs... If they've not set them up right, you could infect the machines. They prevent EXE execution on most machines for good reason...
Click to expand...
Click to collapse
This is a REALLY good explanation Pulser, I always liked the way you answer to the people on XDA! (specially on the Hero thread )
By the way, why an .exe file would infect a machine? Do you mean any kind of .exe? Even from a well known company, who create safe and populars software?
I used to run, without tell anyone, firefox portable in my office to bypass firewall restrictions, is that dangerous as well?
Considering you are at school, you will lack a lot of needed rights to edit certain things. I would know, I had to get around blocks on both Windows and Mac computers my freshman year.
I would advise you use the software, Your Freedom, it's free, but requires an account, you will also need to use a browser such as Firefox, and edit the settings to use the correct IP and Port as a proxy.
It also works on both Mac's and PC's. There is another software that I had used, strictly for windows PC's, but I can't recall the name of it.
Edit: I also ran the software from my flash drive..
i have special access to .exe and Command prompt just because of the position i am in as a student (several Technical courses). I can execute files on my computer and i have Chrome Installed. Does that help?
johnston9234 said:
i have special access to .exe and Command prompt just because of the position i am in as a student (several Technical courses). I can execute files on my computer and i have Chrome Installed. Does that help?
Click to expand...
Click to collapse
What I did was to download firefox portable, you can google it (and if you want you can copy it to an USB drive).
If you go to firefox networking setting, you can try to change the options in advanced with "no proxy" or as wisefire said just write an IP proxy address with the correct port, you should be able to visit any website.
At least this was working flawlessy for me..
yukinok25 said:
This is a REALLY good explanation Pulser, I always liked the way you answer to the people on XDA! (specially on the Hero thread )
By the way, why an .exe file would infect a machine? Do you mean any kind of .exe? Even from a well known company, who create safe and populars software?
I used to run, without tell anyone, firefox portable in my office to bypass firewall restrictions, is that dangerous as well?
Click to expand...
Click to collapse
Only a malicious exe would cause trouble...
But on a shared school network, who knows what the user before you used...
That's why I use disk freezing software on systems I run, and a forced reboot between logins, to give you a clean environment.
But while employees run portable firefox, what if they were to use it on another pc, and it had a virus, which infected the exe?
TBH, flash drives shouldn't be used in work environments, that were used outwith that environment... But that's not realistic in a school.
johnston9234 said:
i have special access to .exe and Command prompt just because of the position i am in as a student (several Technical courses). I can execute files on my computer and i have Chrome Installed. Does that help?
Click to expand...
Click to collapse
Come on... Surely you ain't gonna abuse that privilege? You got it because you were trusted, not to work round the restrictions that are in your acceptable use policy...
yukinok25 said:
What I did was to download firefox portable, you can google it (and if you want you can copy it to an USB drive).
If you go to firefox networking setting, you can try to change the options in advanced with "no proxy" or as wisefire said just write an IP proxy address with the correct port, you should be able to visit any website.
At least this was working flawlessy for me..
Click to expand...
Click to collapse
That would work unless they filter out proxy traffic (you can often detect SOCKS proxies and other ones that are working using this method, or even block common ports like 8080)
Back in high school we used Ultrasurf and GPass. I liked GPass because it was really easy to hide from the taskbar and notification area.
pulser_g2 said:
Only a malicious exe would cause trouble...
But on a shared school network, who knows what the user before you used...
That's why I use disk freezing software on systems I run, and a forced reboot between logins, to give you a clean environment.
But while employees run portable firefox, what if they were to use it on another pc, and it had a virus, which infected the exe?
TBH, flash drives shouldn't be used in work environments, that were used outwith that environment... But that's not realistic in a school.
Click to expand...
Click to collapse
haha, All of my schools have used disk freezing software. I thought about putting it on my parent's computer so I don't have to work on it anymore.
Eventhough I generally don't work on it anymore and just have them call someone to work on it for them. hahah.
buttes said:
Back in high school we used Ultrasurf and GPass. I liked GPass because it was really easy to hide from the taskbar and notification area.
Click to expand...
Click to collapse
Back in my days in high school we just got the many different IT and Librarian passwords/usernames and some teacher's passwords aswell. Then we'd log in to them and download Kazaa (yeah, it was that long ago lol), and downloaded like a gig or two of old NES, SNES, SEGA, Etc roms and started passing them around to everyone. haha.
It got so bad that the school threatened expulsion for everyone that had the games on their user accounts because it was overloading their network and storage space.
For a while they were just searching for the rom's extensions and you could just go and change them to a .txt and then change them back when you wanted to play them, but then they finally realized that the gig of space the roms took up were about 4 times the size of the data we were allowed to have and they could just sort the usernames by the usage of storage space.
The teacher's ones were fun to have though... it allowed you change some grades here and there...especially with my method of madness which I will not describe here. lol
pulser_g2 said:
That would work unless they filter out proxy traffic (you can often detect SOCKS proxies and other ones that are working using this method, or even block common ports like 8080)
Click to expand...
Click to collapse
So, I am really interested about this topic, is there anyway to bypass a restriction if they filter out the proxy traffic?
yukinok25 said:
So, I am really interested about this topic, is there anyway to bypass a restriction if they filter out the proxy traffic?
Click to expand...
Click to collapse
Hmmm... It's possible. If they use deep packet filtering it may be hard. But anything is possible...
I won't go into details, of getting round things, as it is my job to stop people getting round them, and I know a load of tricks, but look at the protocols in use in surfing - you need LDAP/AD to log into windows domain. Then you use DNS to resolve an IP (perhaps via a corporate web proxy). Then HTTP/HTTPS to access the page.
Now think what tools the domain admins might use to administer their network - RDP? SSH? Web services on high ports?
I think I've gone into enough detail for now... I can tunnel out almost any network these days, but I don't think it is sensible, wise, nor ethical to divulge this sort of thing.
pulser_g2 said:
Hmmm... It's possible. If they use deep packet filtering it may be hard. But anything is possible...
I won't go into details, of getting round things, as it is my job to stop people getting round them, and I know a load of tricks, but look at the protocols in use in surfing - you need LDAP/AD to log into windows domain. Then you use DNS to resolve an IP (perhaps via a corporate web proxy). Then HTTP/HTTPS to access the page.
Now think what tools the domain admins might use to administer their network - RDP? SSH? Web services on high ports?
I think I've gone into enough detail for now... I can tunnel out almost any network these days, but I don't think it is sensible, wise, nor ethical to divulge this sort of thing.
Click to expand...
Click to collapse
True I am agree with you Pulser, thus I am really into this sort of things recently.
I am eager to learn..
Could you please recommend me a book or something (not too advanced) that would help me to understand better LDAP/AD, DNS and everything about security and networking?
I obviously wanna learn just for myself and I definitely don't want to spread or divulge in anyway bad behaviors..
johnston9234 said:
hey, i used to have a way around the school router blocks but i cant seem to remember what it was for the life of me. What it consisted was of an .exe that installed some software that allowed me to browse freely. I vaguely remember that the software consisted of a icon on the taskbar that was kinda an earth with fire around it....maybe?
if you have any other good router/server bypasses then please let me know. .exe file executions are blocked everywhere except in the technology building at school. Preferably i would like to have something only requiring a flash drive or it can be done within IE or Chrome.
Click to expand...
Click to collapse
if not previously mentioned, you're looking for "Tor" which comes in both installable packages or portable exe files that can be run off flash drives and includes a custom made 'Mozilla Firefox' which comes preloaded with Tor and does not save any browsing information on your client machine, thus this program is completely anon when ran from a flash drive.
www.torproject.org and you're looking for the Stable Portable Browser Bundle
Please thanks me (click thanks) if this helped
really there is a simple way
use kon-boot and bypass admin password and change the settings
kylon said:
really there is a simple way
use kon-boot and bypass admin password and change the settings
Click to expand...
Click to collapse
not if he is on a school network, he would have to physically run kon-boot on the server itself which defeats the purpose because the server would already be logged in as an admin of some kind.
-correct me if I'm misunderstanding or have missed a key post somewhere-

[IDEA/POLL] Use C2DM app for remote phone access

These apps allow you to remotely access your phone from a web browser. However, they all run a web server on the phone, and I cannot connect to any of the over 3g (Verizon).
LazyDroid Web Desktop
Remote Desktop
Remote Web Desktop
I want to move the web server off phone, and (hopefully) onto private sites.google.com site. App Engine might be necessary, but I'm hoping this could be done solely in JS.
The hosting site would provide the UI, and interact with the phone using C2DM (the magic that powers Chrome2Phone, GMail, and installing apps from the web Market).
The UI is pretty obvious. It just needs a whiz to create HTML, Javascript, etc.
The C2DM backend is a still a bit mystifying to me... and searching for c2dm and javascript does not yield any obvious working implementations. But it seems plausible. Push a command to the phone, phone returns/uploads data to website, and UI updates.
Then there is the Android end. Well, there are the 3 projects above, Tasker for a quasi-hackish approach, and RPC (promising, but it seems like a WIP).
Thoughts? Volunteers? Geniuses?
Ooo... 2 birds with one stone!
This would also kill 2 birds with one stone.
No more typing in dynamic IP addresses! You get to use DNS to handle the connections. Bookmark your site in your desktop browser (it is always the same!). And set a preference in the Android app.
On lazydroid i've in planning some kind of trick that will let you connect behind firewall ... similar to a vpn...
CloudsITA said:
On lazydroid i've in planning some kind of trick that will let you connect behind firewall ... similar to a vpn...
Click to expand...
Click to collapse
I tried it again last week, and it is still unsuccessful. Webkey is currently the only application that I can successfully use to reach my phone.
Now, I could be wrong, but I believe all of these apps run a web server on the phone. I get a lovely, private 10.x.x.x IP address, which I can't reverse the route to. I have tried and failed to get DynDNS to work.
I have been looking into a solution since my original post. I have not had any time to do code squat, but I have loosely figured out all of the parts.
The big architectural difference I have been seeking is removing the server from the phone. I am not an Android expert, but I don't believe it even requires a running service. (Thank you, C2DM.)
With the app-webservice separation, you can work a "protocol" that reduces the overall bandwidth used... and thus improve battery life. Put all the "hard work" on a webserver, and (things get fuzzy here) possibly push it off onto the client browser (JS).
C2DM Browser Links
I could probably make something like WebKey but with C2DM and some more features. If you want you can give suggestions and I'll start making on saturday (after my exams). It would probably be possible in javascript for the actual sending from server and php just for logging in to your google account. The phone would just be registered on the server and no services (just as you wanted )
nebkat said:
I could probably make something like WebKey but with C2DM and some more features. If you want you can give suggestions and I'll start making on saturday (after my exams). It would probably be possible in javascript for the actual sending from server and php just for logging in to your google account. The phone would just be registered on the server and no services (just as you wanted )
Click to expand...
Click to collapse
I am not sure "more features" is necessarily the direction I'm headed. I am focused on making a "seamless" experience (i.e. less separation of phone and computer).
I was headed to App Engine (Python bias + easy Google integration). I have a project created. I haven't pulled together the various examples to make the core, but it seems <naive>simple</naive>. Stir in some templates, CSS, a sprinkling of JS, and voila!
The big "tricky" part that I can't convert from f***ing magic to a clear approach is the data link in the server. I want to avoid any storage to a Google disk, or otherwise, even temporarily. No stored data = easy privacy policy.
nebkat, if you're really chomping at the bit to code, here's my Android client concept.
- C2DM is a wake-up call. (cheat an borrow ChromeToPhone's ID to begin with)
- Connect to web server, send "I'm here," and wait for further instructions (Channels API/Comet/AJAX/.........)
- make the command set extensible
- each command is blockable in the client. (Permission control is set on the phone, not remotely.)
- After N minutes of no activity, send a "good bye," disconnect from the server, and fade into the background.
Don't worry, I'm very experienced with the server side stuff and I know exactly what you want. The only information stored on the sever side would be google account, the device c2dm registration id and some logging features just for statistics. A password could be set on the phone that would be sha512 hashed on the ajax request and would be sent to the phone. Even if a hacker found the hash, it would be useless without being logged in to the persons google account or knowing the server side auth token.
For now i'll just make the reciever, processor and command output and later on the extra security and ui stuff. It will work exactly the same way as Chrome2Phone except it will have server side php and the different commands. The connection from pc to phone will be something like this.
user command -> ajax request -> php c2dm request -> phone
phone -> php server http request -> controller page status
BTW I'm saving up for a Nexus S, how much would people pay for this type of app? There would definitely be a free version, but I just need to get the Nexus S because I have a Galaxy Spica now and it isn't the best for app development. I'm new to how stuff at xda works, would a donate version get me enoguh for the Nexus?
nebkat said:
Don't worry, ... <snip> ... auth token.
Click to expand...
Click to collapse
Alrighty then. I'm feeling like I can stop contemplating implementing this.
BTW I'm saving up for a Nexus S, how much would people pay for this type of app? There would definitely be a free version, but I just need to get the Nexus S because I have a Galaxy Spica now and it isn't the best for app development. I'm new to how stuff at xda works, would a donate version get me enoguh for the Nexus?
Click to expand...
Click to collapse
Since I was learning the ins and outs of App Engine, I read their quota rules and realized if this were popular it would require funding. I don't know where you are going to your web server, but I assume you'll have to pay someone to keep it running. But I had thought about $$$ already.
"Give away the razor, and sell them the blades."
Make the app free, no feature restrictions.
You get your money through various "membership" levels on the server. (See the account levels at fastmail.fm for an example.) So, you can use the app for free, but you only get, say, 2-3 MB of traffic per day, and only X sessions per day. Need more? See the pricing chart.
user command -> ajax request -> php c2dm request -> phone
phone -> php server http request -> controller page status
Click to expand...
Click to collapse
user command -> php server http request -> phone
phone -> php server http request -> controller page status
user command -> php server http request -> phone
lather, rinse, repeat.
C2DM is not deterministic, and acts up in low signal conditions. So, I made a decision to only use C2DM to initiate a session. Once both ends are connected to the server, everything goes over HTTP.
Oh.... and not that we need another Lookout/Phone Finder, but a shared-secret SMS code for the case where "they" have shut down the data connection.
I have my own server nebkat.com and there is nothing on it anyway.
The only other way to make "push" requests to the phone is with WebSockets. It would probably be better than c2dm because we have full control over what gets sent (google limits some requests). The advantage of WebSockets is that they send no header information which means that we could send our messages in 20 to 30 bytes.
I'll look into more detail on friday.
With web sockets won't you need to ensure the phone has a routable, external IP address? I know, for one, t-mobile does not expose an external IP address for their phones. Unless, of course, if the phone is connected over WiFi. C2DM works great for me (I have used a couple of apps with it and it is really useful).
MrGibbage said:
With web sockets won't you need to ensure the phone has a routable, external IP address? I know, for one, t-mobile does not expose an external IP address for their phones. Unless, of course, if the phone is connected over WiFi. C2DM works great for me (I have used a couple of apps with it and it is really useful).
Click to expand...
Click to collapse
No, WS is server initiated and the ip address' shouldn't make a difference.
MrGibbage said:
With web sockets won't you need to ensure the phone has a routable, external IP address? I know, for one, t-mobile does not expose an external IP address for their phones. Unless, of course, if the phone is connected over WiFi. C2DM works great for me (I have used a couple of apps with it and it is really useful).
Click to expand...
Click to collapse
You need an valid external IP address if you are attempting to initiate contact with your phone, which is why the 4-5 apps I've mentioned do not work on carriers like t-mo and verizon.
But the phone can establish a connection, and the carrier NATs (or whatever) will handle the routing for outgoing and incoming data.
I think the right questions are: Will Verizon/T-Mo allow the ports and protocol for WebSockets? Do Android and desktop browsers implement the draft API correctly and consistently?
I like C2DM. I works well when you have a good connection. But there are 3 issues with it.
1) The message size limit is 1024 bytes. Not ideal for file transfers.
2) In a poor signal areas, since the service retries sending messages, you will get delayed and/or duplicate messages. I work in a large "concrete" building, so I get this behavior often enough that I don't want to rely on it.
3) I believe there is a limit on the number of messages you can send. So, hunting around the filesystem could hit this limit (but unlikely in reality... I hope.)
It would be interesting to see exactly how those apps handle all of the data. Do they only use C2DM, or do they hand over to another protocol?
Ok my exams are over and I am starting with it. I'll give updates on this thread

Categories

Resources