siriproxy 0.5.2 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -58,6 +58,7 @@ If you don't already have Ruby 2.0.0 (or at least 1.9.3) installed through RVM,
58
58
  `echo 'export PATH=$HOME/.rvm/bin:$PATH' >> ~/.bashrc`
59
59
  * Activate changes:
60
60
  `. ~/.bashrc`
61
+
61
62
  3. Install Ruby 2.0.0 (if you don't have it already):
62
63
 
63
64
  `rvm install 2.0.0`
@@ -91,7 +92,7 @@ If you don't already have Ruby 2.0.0 (or at least 1.9.3) installed through RVM,
91
92
  FAQ
92
93
  ---
93
94
 
94
- **Will this let me run Siri on my iPhone 4, iPod Touch, iPhone 3G, Microwave, etc?**
95
+ **Will this let me run Siri on my none Siri devices (eg. iPhone 4, iPod Touch, iPhone 3G, Microwave, etc)?**
95
96
 
96
97
  No. Please stop asking.
97
98
 
@@ -119,7 +120,7 @@ No. Don't even ask.
119
120
 
120
121
  **I'm getting a bunch of "[Info - Guzzoni] Object: SessionValidationFailed" messages. What's wrong?!**
121
122
 
122
- You're probably not using an iPhone 4S. You need to be using an iPhone 4S (or have a UDID you can sub in) in order to make use of SiriProxy. Sorry, this is not designed to be a way around that limitation. (Thanks to [@brownie545](http://www.twitter.com/brownie545) for providing information on what happens when you use a non-iPhone 4S)
123
+ You're probably using a device without an official Siri. You need to be using an official Siri device (or have a UDID you can sub in) in order to make use of SiriProxy. Sorry, this is not designed to be a way around that limitation. (Thanks to [@brownie545](http://www.twitter.com/brownie545) for providing information on what happens when you use a unofficial Siri-devices)
123
124
 
124
125
  **How do I remove the certificate from my iPhone when I'm done?**
125
126
 
@@ -151,36 +152,13 @@ Your network setup may be different. This is THE most complex part of setting up
151
152
  Running SiriProxy as an unprivileged user
152
153
  -----------------------------------------
153
154
 
154
- Given that SiriProxy is a bit of a hack and very unstable, it's probably a good idea to not run it as root. This is especially true if you're allowing access to your server from outside your network. Doing this isn't actually that hard, as SiriProxy doesn't need access to anything privileged.
155
-
156
- The only trick is that Siri expects the server to be running on port 443, and only privileged users can open ports below 1024 on *NIX operating systems. So I work around this by running SiriProxy on port 2000 and redirecting traffic to that port using iptables.
157
-
158
- **Step 1: Set up an account**
159
-
160
- I just set up an account called "siriproxy". I made sure it wasn't a "sudoer" (on my computer, that means keep it out of the "sudo" group). I also think it's a good idea to refrain from giving it login privileges. But do as I say on that one, not as I do.
161
-
162
- **Step 2: Set up iptables/ufw**
163
-
164
- I run UFW on my machine, which is pretty much a wrapper on iptables. I tossed in the following at the top of my `/etc/ufw/before.rules`:
165
-
166
- *nat
167
- :PREROUTING ACCEPT [0:0]
168
- -A PREROUTING --dst 10.0.0.3 -p tcp --dport 443 -j REDIRECT --to-port 2000
169
- COMMIT
170
-
171
- The IP referenced (10.0.0.3) is the IP of the computer running SiriProxy. Since this computer is being used as a wireless AP, it's important to only redirect traffic targeted directly at the server, otherwise all traffic to 443/tcp on my wifi network would be incorrectly redirected.
172
-
173
- I also made sure to open up 2000/tcp to allow traffic:
174
-
175
- sudo ufw allow 2000/tcp
176
-
177
- **Step 3: Set up upstart script**
178
-
179
- The full explanation of this is shown below. It's a handy thing to do by itself. It allows me to have SiriProxy start on boot and also allows me to easily control it using commands like `start siriproxy` and `stop siriproxy`.
155
+ This used to be really hard. Now it's very easy. Just run `rvmsudo siriproxy server -u USER` and SiriProxy will set it's userid to `USER`'s userid.
180
156
 
181
157
  Running SiriProxy via Upstart
182
158
  -----------------------------
183
159
 
160
+ **NOTE: This section needs to be updated.** It was written before some of the newer features for SiriProxy. It should be much simpler now.
161
+
184
162
  Here's the upstart script I created for my home SiriProxy server. It respawns on a crash because SiriProxy is delicate and likes to crash. My server is running BackTrack 5 (a derivative of Ubuntu 10.04, I believe) and I use it as my wireless access point, making it an obvious location for SiriProxy:
185
163
 
186
164
  description "SiriProxy server"
@@ -193,7 +171,7 @@ Here's the upstart script I created for my home SiriProxy server. It respawns on
193
171
 
194
172
  respawn
195
173
 
196
- exec start-stop-daemon --start --chuid siriproxy --exec /home/siriproxy/src/SiriProxy/siriproxy2000.sh
174
+ exec start-stop-daemon --start --exec /home/siriproxy/src/SiriProxy/siriproxy2000.sh
197
175
 
198
176
  Here are the contents of `siriproxy2000.sh` (as referenced above):
199
177
 
@@ -33,7 +33,7 @@ class SiriProxy
33
33
 
34
34
  retries = 0
35
35
  while $APP_CONFIG.server_ip && !$SP_DNS_STARTED && retries <= 5
36
- puts "[Info - Server] DNS server is not running yet, waiting #{2**retries} second#{'s' if retries > 0}..."
36
+ puts "[Info - Server] DNS server is not running yet, waiting #{2**retries} second#{'s' if retries > 1}..."
37
37
  sleep 2**retries
38
38
  retries += 1
39
39
  end
@@ -175,6 +175,11 @@ class SiriProxy::Connection < EventMachine::Connection
175
175
  end
176
176
 
177
177
  def prep_received_object(object)
178
+ #workaround for #143
179
+ if object["class"] == "FinishSpeech" or object["class"] == "SpeechRecognized"
180
+ @block_rest_of_session = false
181
+ end
182
+
178
183
  if object["refId"] == self.last_ref_id && @block_rest_of_session
179
184
  puts "[Info - Dropping Object from Guzzoni] #{object["class"]}" if $LOG_LEVEL > 1
180
185
  pp object if $LOG_LEVEL > 3
@@ -53,7 +53,7 @@ class SiriProxy::Dns
53
53
  RubyDNS::run_server(:listen => @interfaces) do
54
54
  @logger.level = log_level
55
55
 
56
- match(/guzzoni.apple.com/, Resolv::DNS::Resource::IN::A) do |_host, transaction|
56
+ match(/guzzoni.apple.com/, Resolv::DNS::Resource::IN::A) do |transaction|
57
57
  transaction.respond!(server_ip)
58
58
  end
59
59
 
@@ -44,7 +44,7 @@ class SiriProxy::Interpret
44
44
  }
45
45
  }
46
46
 
47
- phrase
47
+ phrase.strip
48
48
  end
49
49
  end
50
50
  end
@@ -25,9 +25,9 @@ class SiriProxy::PluginManager < Cora
25
25
  plugin.plugin_name = className
26
26
  plugin.manager = self
27
27
  @plugins << plugin
28
- rescue
28
+ rescue Exception=>e
29
29
  if pluginConfig['name']
30
- puts "[Error] Failed to load plugin: #{pluginConfig['name']}"
30
+ puts "[Error] Failed to load plugin: #{pluginConfig['name']} reason: #{e.message}"
31
31
  else
32
32
  puts "[Error] Failed to load a plugin that has no name, check your config.yml"
33
33
  end
@@ -1,3 +1,3 @@
1
1
  class SiriProxy
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.4"
3
3
  end
@@ -26,5 +26,5 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency "cora", "=0.0.4"
27
27
  s.add_runtime_dependency "bundler"
28
28
  s.add_runtime_dependency "rake"
29
- s.add_runtime_dependency "rubydns"
29
+ s.add_runtime_dependency "rubydns", "~> 0.6.0"
30
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: siriproxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-03-11 00:00:00.000000000 Z
14
+ date: 2013-04-18 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: CFPropertyList
@@ -114,17 +114,17 @@ dependencies:
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  none: false
116
116
  requirements:
117
- - - ! '>='
117
+ - - ~>
118
118
  - !ruby/object:Gem::Version
119
- version: '0'
119
+ version: 0.6.0
120
120
  type: :runtime
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  none: false
124
124
  requirements:
125
- - - ! '>='
125
+ - - ~>
126
126
  - !ruby/object:Gem::Version
127
- version: '0'
127
+ version: 0.6.0
128
128
  description: Siri Proxy is a proxy server for Apple's Siri "assistant." The idea is
129
129
  to allow for the creation of custom handlers for different actions. This can allow
130
130
  developers to easily add functionality to Siri.