From 6781f9aa8589dd53ec577acd7812338fc015f088 Mon Sep 17 00:00:00 2001
From: Jesse Young
Date: Sat, 1 Oct 2011 15:47:55 -0700
Subject: [PATCH] add page explaining how to test with emulator; faq for
reverse tunnels; screenshot of pending messages
---
.phrozn/entries/faq/index.twig | 43 ++++++++++
.phrozn/entries/history/index.twig | 14 ++--
.phrozn/entries/how/index.twig | 2 +-
.phrozn/entries/index.twig | 11 ++-
.phrozn/entries/install/index.twig | 31 +++++---
.phrozn/entries/serverapi/index.twig | 39 +++++----
.phrozn/entries/test/index.twig | 46 +++++++++++
.phrozn/layouts/default.twig | 2 +
.phrozn/media/avd.png | Bin 0 -> 23962 bytes
.phrozn/media/screenshot-main.png | Bin 92694 -> 43561 bytes
.phrozn/media/screenshot-market.png | Bin 26100 -> 30913 bytes
.phrozn/media/screenshot-pending.png | Bin 0 -> 26852 bytes
.phrozn/media/screenshot-settings.png | Bin 64268 -> 26514 bytes
.phrozn/media/telnet.png | Bin 0 -> 3329 bytes
.phrozn/media/topology.png | Bin 26742 -> 24645 bytes
.phrozn/styles/site.css | 9 ++-
community/index.html | 2 +
faq/index.html | 44 +++++++++++
history/index.html | 16 ++--
how/index.html | 4 +-
index.html | 13 ++-
install/index.html | 33 +++++---
media/avd.png | Bin 0 -> 23962 bytes
media/screenshot-main.png | Bin 92694 -> 43561 bytes
media/screenshot-market.png | Bin 26100 -> 30913 bytes
media/screenshot-pending.png | Bin 0 -> 26852 bytes
media/screenshot-settings.png | Bin 64268 -> 26514 bytes
media/telnet.png | Bin 0 -> 3329 bytes
media/topology.png | Bin 26742 -> 24645 bytes
serverapi/index.html | 41 ++++++----
styles/site.css | 6 +-
test/index.html | 110 ++++++++++++++++++++++++++
32 files changed, 385 insertions(+), 81 deletions(-)
create mode 100755 .phrozn/entries/test/index.twig
create mode 100755 .phrozn/media/avd.png
create mode 100755 .phrozn/media/screenshot-pending.png
create mode 100755 .phrozn/media/telnet.png
create mode 100755 media/avd.png
create mode 100755 media/screenshot-pending.png
create mode 100755 media/telnet.png
create mode 100755 test/index.html
diff --git a/.phrozn/entries/faq/index.twig b/.phrozn/entries/faq/index.twig
index b6abd9c..27eda49 100755
--- a/.phrozn/entries/faq/index.twig
+++ b/.phrozn/entries/faq/index.twig
@@ -2,6 +2,7 @@ id: faq
title: Frequently Asked Questions
q_alternative: Instead of implementing a SMS gateway as an Android app, why not use X instead? (where X = Twilio, Tropo, Clickatell, FrontlineSMS, RapidSMS, Kannel, etc.)
q_rate: How fast can EnvayaSMS send SMS messages?
+q_tunnel: EnvayaSMS can't connect to my dev server! What's wrong?
q_phones: What phones are compatible with EnvayaSMS?
q_servers: Does EnvayaSMS use envaya.org's servers?
q_envaya_org: What is the relationship between EnvayaSMS and envaya.org?
@@ -17,6 +18,9 @@ q_smssync: What is the difference between EnvayaSMS and SMSSync?
{{ this.q_rate }}
+
+ {{ this.q_tunnel }}
+
{{ this.q_phones }}
@@ -128,6 +132,45 @@ To increase the rate at which you can send SMS messages, you can install EnvayaS
In order to send more than 100 messages per hour with a single phone, it is necessary to install EnvayaSMS Expansion Packs.
+{{ this.q_tunnel }}
+
+
+EnvayaSMS may be unable to connect to your development web server if it is blocked by a firewall on your computer,
+or if your computer has a IP address that's inaccessible from your phone's network.
+
+
+
+If your Android phone is on the same Wi-Fi network as your development web server, configure the firewall on
+your development computer to allow incoming connections to your web server, then simply enter your computer's IP address
+in EnvayaSMS as the Server URL.
+
+
+If you're testing with the phone's mobile data connection, or if your phone and development computer are on different
+Wi-Fi networks, the IP address of your development web server is likely inaccessible to the phone.
+
+
+To allow the phone to connect to your development computer, you can set up a reverse SSH tunnel between your
+development computer and a server with a public IP address.
+
+
+To set up a reverse SSH tunnel, you can either:
+
+
+ - use a hosted service like localtunnel, or
+ - use
ssh -R
to connect to your own server accessible from the public internet. For example:
+ssh -R 0.0.0.0:8765:localhost:80 [user]@[host]
+
+This sets up port 8765 on host
to forward to port 80 on your local development computer.
+Then you can use http://[host]:8765/
as the Server URL in EnvayaSMS, and it will be
+forwarded to http://localhost
on your development server.
+
+
+Note: In order for SSH port forwarding to work, you will need to set GatewayPorts yes
in the /etc/sshd_config
file
+on the public server.
+
+
+
+
{{ this.q_phones }}
diff --git a/.phrozn/entries/history/index.twig b/.phrozn/entries/history/index.twig
index 1cb0bef..067d4d6 100755
--- a/.phrozn/entries/history/index.twig
+++ b/.phrozn/entries/history/index.twig
@@ -2,27 +2,25 @@ id: history
title: History
---
-Version 2.0-rc2 (2011/09/29)
+Version 2.0 (2011/10/01)
-
Automatic failover between Wi-Fi and mobile data connection if server is unreachable
(e.g. when Wi-Fi router is on, but it has no internet access)
+ -
+ User can see all pending messages, and retry/delete individual messages
+
-
Send timestamp of incoming messages to server
-
-
-
-Version 2.0-rc1 (2011/09/28)
-
-
+
-
Allow outgoing SMS messages to be sent in priority order
-
Reschedule outgoing messages when the Android outgoing SMS limit would be exceeded
-
+
Version 2.0-beta (2011/09/23)
diff --git a/.phrozn/entries/how/index.twig b/.phrozn/entries/how/index.twig
index 3875569..ed412ed 100755
--- a/.phrozn/entries/how/index.twig
+++ b/.phrozn/entries/how/index.twig
@@ -22,7 +22,7 @@ work over the phone's mobile data connection, but Wi-Fi is likely to be faster,
Then your network would look like this:
-
+
diff --git a/.phrozn/entries/index.twig b/.phrozn/entries/index.twig
index 4fdd136..88566f5 100755
--- a/.phrozn/entries/index.twig
+++ b/.phrozn/entries/index.twig
@@ -6,7 +6,8 @@ layout: default.twig
-
+
+
EnvayaSMS is a SMS and MMS gateway running entirely as an Android app.
@@ -51,9 +52,13 @@ It works wherever the phone can receive SMS messages and access the Internet
In order to deploy EnvayaSMS, you will need a messaging plan for your phone, and the phone itself.
- EnvayaSMS is compatible with many old or inexpensive Android phones, e.g. the LG GT540, currently $120 on Amazon.com.
+ EnvayaSMS is compatible with many old or inexpensive Android phones, e.g. the LG GT540, currently $120 on Amazon.com.
+
+ Before deploying EnvayaSMS, you can test EnvayaSMS without an Android phone
+ by installing EnvayaSMS on an emulated phone on your computer. Learn more...
+
-
+
Install EnvayaSMS Now
\ No newline at end of file
diff --git a/.phrozn/entries/install/index.twig b/.phrozn/entries/install/index.twig
index c604a68..7ecd6df 100755
--- a/.phrozn/entries/install/index.twig
+++ b/.phrozn/entries/install/index.twig
@@ -1,21 +1,26 @@
id: install
title: Installing EnvayaSMS
---
-Before installing EnvayaSMS, ensure that you have the following prerequisites:
+In order to install and deploy EnvayaSMS, you will need the following prerequisites:
- - One or more Android phones (1.6 Donut or higher) that are
- registered on a mobile network.
+ - One or more Android phones (1.6 or higher),
+ registered on a mobile network
+
- A way for the phones to connect to the internet, either via Wi-Fi
- or the mobile data service.
+ or the mobile data service
(Even if using Wi-Fi, mobile data
service is necessary to receive MMS messages.)
- - A web server accessible from the public internet
+ - A web server accessible from the public internet
-Using an Android phone, open EnvayaSMS on Android Market by clicking the link from your phone's browser, or scanning the barcode with a QR code app. Then, follow the steps shown below to install EnvayaSMS on your phone.
+
+Note: If you don't have these prerequisites yet, you can test EnvayaSMS on your computer.
+
-
+To install EnvayaSMS on an Android phone, open EnvayaSMS on Android Market by clicking the link below from your phone's browser, or scanning the barcode with a QR code app.
+
+
@@ -25,7 +30,7 @@ Using an Android phone, open
-
+
@@ -80,6 +85,9 @@ After your server is configured, configure EnvayaSMS on your phone to connect to
Recommended: under Wi-Fi sleep policy, select "always stay connected".
(Otherwise, EnvayaSMS will be unable to forward messages after the phone goes to sleep.)
+
Optional: enable Network Failover so that the phone will automatically switch
+to mobile data if the Wi-Fi network stops working.
+
Check "Enable EnvayaSMS"
Click the Back button to return to the main screen
@@ -93,8 +101,11 @@ then click "Test Connection".
Important: After EnvayaSMS is enabled, it will forward all SMS messages regardless of whether the
EnvayaSMS app is open. If you want to use SMS normally again, return to EnvayaSMS' settings screen
-and uncheck "Enable EnvayaSMS".
-
+and uncheck "Enable EnvayaSMS".
+
+
If you're testing EnvayaSMS with an Android phone that you're also using for normal communication,
+you can enable "Test mode" on the settings screen so that EnvayaSMS only handles SMS messages
+from particular phone numbers.
Installing Expansion Packs
diff --git a/.phrozn/entries/serverapi/index.twig b/.phrozn/entries/serverapi/index.twig
index 1cd5ab4..4a84fd0 100755
--- a/.phrozn/entries/serverapi/index.twig
+++ b/.phrozn/entries/serverapi/index.twig
@@ -32,12 +32,13 @@ HTTP Request Format
POST /sg/app HTTP/1.1
X-Request-Signature: sAemG31uRllk/K9xck2WRNaF/WI=
-Content-Length: 96
+Content-Length: 120
Content-Type: application/x-www-form-urlencoded
Host: 192.168.70.1:3000
Connection: Keep-Alive
-from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212&action=incoming
+from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212
+&action=incoming×tamp=1317506831000
An incoming MMS message with an image/jpeg
part and a text/plain
part with message 'Test':
@@ -46,53 +47,61 @@ from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212
POST /sg/app HTTP/1.1
X-Request-Signature: OgpiQet9guVhEp+0klrONR8qGNs=
Content-Length: 13087
-Content-Type: multipart/form-data; boundary=i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+Content-Type: multipart/form-data; boundary=i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Host: 192.168.70.1:3000
Connection: Keep-Alive
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="from"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
+16505551234
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
+Content-Disposition: form-data; name="timestamp"
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+1317506831000
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="message"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Test
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="message_type"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
mms
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="mms_parts"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
-[{"type":"application/smil","filename":"01smil","cid":"<0000>","name":"part0"},{"type":"text/plain","filename":"Text01.txt","cid":"<569>","name":"part1"},{"type":"image/jpeg","filename":"Image0001.jpg","cid":"<570>","name":"part2"}]
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+[{"type":"application/smil","filename":"01smil","cid":"<0000>","name":"part0"},
+{"type":"text/plain","filename":"Text01.txt","cid":"<569>","name":"part1"},
+{"type":"image/jpeg","filename":"Image0001.jpg","cid":"<570>","name":"part2"}]
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="version"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
3
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="phone_number"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
16505551212
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="action"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
incoming
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="part0"; filename="01smil"
Content-Type: application/smil; charset=UTF-8
Content-Transfer-Encoding: binary
@@ -113,19 +122,19 @@ Content-Transfer-Encoding: binary
</body>
</smil>
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="part1"; filename="Text01.txt"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: binary
Test
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
Content-Disposition: form-data; name="part2"; filename="Image0001.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
BINARY IMAGE DATA
---i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO--
+--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG--
Checking for outgoing SMS messages:
diff --git a/.phrozn/entries/test/index.twig b/.phrozn/entries/test/index.twig
new file mode 100755
index 0000000..4390aa0
--- /dev/null
+++ b/.phrozn/entries/test/index.twig
@@ -0,0 +1,46 @@
+id: test
+title: Testing EnvayaSMS
+---
+
+
+
+If you don't yet have an Android phone, you can test EnvayaSMS in an emulated phone on your computer.
+
+
+With this method, you can test EnvayaSMS for free
+and figure out if EnvayaSMS will work for your project
+without needing to get an actual phone or subscribe to mobile service.
+
+
+The following steps explain how to set up EnvayaSMS on an Android Virtual Device:
+
+
+ - Install the Android SDK on your computer (where you are running a "dev" copy of your website)
+ - Create a new Android Virtual Device with a target of Android 1.6 or higher. Specify a size for the SD card (necessary to download EnvayaSMS via the browser)
+ - Start the virtual device
+ - Open the Browser app and go to sms.envaya.org/install
+ - Click on the EnvayaSMS-release.apk link to download EnvayaSMS.
+ Note: Android Market does not work in the emulator.
+ - Install EnvayaSMS
+ - Configure EnvayaSMS with the settings of your development server.
+ Note: Do not enter localhost
as the Server URL (since this would refer to the AVD itself). Instead, use your computer's IP address on the local network, as shown by the ipconfig
+ or ifconfig
utilities.
+
+ -
+
+ To simulate incoming SMS on the emulator:
+
+ - using telnet from your host computer, connect to
localhost:5554
+ Note: on Windows, you can install puttytel.
+
+ - type
sms send [phonenumber] [text message]
to send messages to the emulator.
+ Note: the emulator cannot receive MMS messages.
+
+
+
+
+
+
+Of course, you can also test EnvayaSMS by connecting a real Android phone to your development web server.
+For more information, see the FAQ.
+
diff --git a/.phrozn/layouts/default.twig b/.phrozn/layouts/default.twig
index 109bb1f..20f40b2 100755
--- a/.phrozn/layouts/default.twig
+++ b/.phrozn/layouts/default.twig
@@ -26,6 +26,8 @@
·
Install
·
+
Test
+ ·
How it Works
·
API Reference
diff --git a/.phrozn/media/avd.png b/.phrozn/media/avd.png
new file mode 100755
index 0000000000000000000000000000000000000000..47f9dfe23702288541a561d470bae15240d282cd
GIT binary patch
literal 23962
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
;Q%GVd;+myG1}Zr09y(;$@KQ6em5F7ipby57
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
FV1j2Sb3gz9
literal 0
HcmV?d00001
diff --git a/.phrozn/media/screenshot-main.png b/.phrozn/media/screenshot-main.png
index e9cfc465aa768ec4726552ea69a36aebaff5dd01..d7ad3c74ef355340ac0626e198a018de82c24619 100755
GIT binary patch
literal 43561
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