appswarm 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (305) hide show
  1. data/.autotest +124 -0
  2. data/History.txt +7 -0
  3. data/Manifest.txt +304 -0
  4. data/README.txt +373 -0
  5. data/Rakefile +153 -0
  6. data/TODO +7 -0
  7. data/apps/README.txt +17 -0
  8. data/apps/admin/admin.rb +79 -0
  9. data/apps/admin/controllers/admin.rb +81 -0
  10. data/apps/admin/controllers/settings.rb +63 -0
  11. data/apps/admin/controllers/users.rb +3 -0
  12. data/apps/admin/features/access.feature +21 -0
  13. data/apps/admin/features/mountLocal.feature +12 -0
  14. data/apps/admin/features/settings.feature +68 -0
  15. data/apps/admin/features/startApps.feature +27 -0
  16. data/apps/admin/layouts/main.rhtml +10 -0
  17. data/apps/admin/lib/settings.rb +52 -0
  18. data/apps/admin/static/admin.css +23 -0
  19. data/apps/admin/views/_log.rhtml +21 -0
  20. data/apps/admin/views/index.rhtml +43 -0
  21. data/apps/admin/views/info.rhtml +7 -0
  22. data/apps/admin/views/settings.rhtml +9 -0
  23. data/apps/admin/views/settings/_http_app.rhtml +15 -0
  24. data/apps/admin/views/settings/_web_server.rhtml +32 -0
  25. data/apps/admin/views/settings/index.rhtml +3 -0
  26. data/apps/admin/views/users/index.rhtml +6 -0
  27. data/apps/application_provider/application_provider.rb +11 -0
  28. data/apps/blog/blog.rb +27 -0
  29. data/apps/blog/controllers/blog.rb +29 -0
  30. data/apps/blog/views/index.rhtml +27 -0
  31. data/apps/browser_starter/browser_starter.rb +32 -0
  32. data/apps/crypto/crypto.rb +47 -0
  33. data/apps/crypto/crypto_rsa.rb +102 -0
  34. data/apps/crypto/spec/crypto_spec.rb +10 -0
  35. data/apps/directory_service/directory_service.rb +107 -0
  36. data/apps/directory_service/net_application.rb +92 -0
  37. data/apps/directory_service/spec/directory_service_spec.rb +36 -0
  38. data/apps/directory_service/spec/net_application_spec.rb +3 -0
  39. data/apps/global_application_interface/global_application.rb +52 -0
  40. data/apps/global_application_interface/global_application_interface.rb +84 -0
  41. data/apps/global_application_interface/spec/app_api_spec.rb +5 -0
  42. data/apps/global_tuple_space/global_tuple_space.rb +27 -0
  43. data/apps/global_web_proxy/features/session_handling.feature +7 -0
  44. data/apps/global_web_proxy/global_web_proxy.rb +221 -0
  45. data/apps/global_web_proxy/proxy/HTTPProxyServer-Dateien/rdoc-style.css +208 -0
  46. data/apps/global_web_proxy/proxy/HTTPProxyServer.html +566 -0
  47. data/apps/global_web_proxy/proxy/dnstest.rb +30 -0
  48. data/apps/global_web_proxy/proxy/proxy.rb +86 -0
  49. data/apps/global_web_proxy/proxy/wiki.html +267 -0
  50. data/apps/global_web_proxy/proxy/wiki.rb +115 -0
  51. data/apps/global_web_proxy/spec/res1 +112 -0
  52. data/apps/global_web_proxy/spec/res2 +125 -0
  53. data/apps/global_web_proxy/spec/web_proxy_spec.rb +88 -0
  54. data/apps/global_web_server/global_web_server.rb +120 -0
  55. data/apps/global_web_server/global_web_servlet.rb +6 -0
  56. data/apps/hello_world/controllers/hello_world.rb +11 -0
  57. data/apps/hello_world/features/show_on_local_web_server.feature +44 -0
  58. data/apps/hello_world/features/starting_apps.feature +6 -0
  59. data/apps/hello_world/features/through_global.feature +12 -0
  60. data/apps/hello_world/hello_world.rb +3 -0
  61. data/apps/hello_world/views/get.rhtml +10 -0
  62. data/apps/hello_world/views/index.rhtml +9 -0
  63. data/apps/hello_world/views/post.rhtml +10 -0
  64. data/apps/home/controllers/home.rb +11 -0
  65. data/apps/home/home.rb +12 -0
  66. data/apps/home/layouts/main.rhtml +16 -0
  67. data/apps/home/static/Zeichnung.svg +240 -0
  68. data/apps/home/static/home.css +134 -0
  69. data/apps/home/static/menu.css +99 -0
  70. data/apps/home/views/_appInfo.rhtml +22 -0
  71. data/apps/home/views/_dummy_fill.rhtml +3 -0
  72. data/apps/home/views/_info.rhtml +6 -0
  73. data/apps/home/views/_menu.rhtml +17 -0
  74. data/apps/home/views/index.rhtml +4 -0
  75. data/apps/home/views/overview.rhtml +2 -0
  76. data/apps/local_chunk_store/chunk_store.rb +15 -0
  77. data/apps/local_chunk_store/local_chunk_store.rb +123 -0
  78. data/apps/local_chunk_store/spec/local_chunk_store_spec.rb +30 -0
  79. data/apps/local_file_store/app_configuration.rb +78 -0
  80. data/apps/local_file_store/app_file_store.rb +32 -0
  81. data/apps/local_file_store/cached_file_store.rb +94 -0
  82. data/apps/local_file_store/features/testbed_handling_of_directories.feature +20 -0
  83. data/apps/local_file_store/local_file_store.rb +47 -0
  84. data/apps/local_file_store/spec/app_configuration_spec.rb +30 -0
  85. data/apps/local_file_store/spec/local_file_store_spec.rb +54 -0
  86. data/apps/local_object_storage/lib/cell.rb +29 -0
  87. data/apps/local_object_storage/lib/cellmgr.rb +57 -0
  88. data/apps/local_object_storage/lib/index.rb +43 -0
  89. data/apps/local_object_storage/lib/marshal.rb +96 -0
  90. data/apps/local_object_storage/lib/pagefile.rb +6 -0
  91. data/apps/local_object_storage/lib/persistent_object.rb +126 -0
  92. data/apps/local_object_storage/local_object_storage.rb +148 -0
  93. data/apps/local_object_storage/spec/local_object_storage_spec.rb +123 -0
  94. data/apps/local_secure_file_store/local_secure_file_store.rb +64 -0
  95. data/apps/local_secure_file_store/spec/local_secure_file_store_spec.rb +23 -0
  96. data/apps/local_tuple_space/local_tuple_space.rb +92 -0
  97. data/apps/local_tuple_space/spec/tuple_space_spec.rb +25 -0
  98. data/apps/local_web_server/features/parsing_args.feature +18 -0
  99. data/apps/local_web_server/local_web_server.rb +166 -0
  100. data/apps/logger/logger.rb +27 -0
  101. data/apps/master/master.rb +46 -0
  102. data/apps/master/spec/master_spec.rb +31 -0
  103. data/apps/my_spec_spec.rb +15 -0
  104. data/apps/name_service/name_service.rb +75 -0
  105. data/apps/name_service/spec/name_service_spec.rb +51 -0
  106. data/apps/network_discovery/network_discovery.rb +45 -0
  107. data/apps/network_discovery_localstore/network_discovery_localstore.rb +20 -0
  108. data/apps/network_discovery_udp/network_discovery_udp.rb +51 -0
  109. data/apps/network_lookup/network_lookup.rb +61 -0
  110. data/apps/network_node/abstract_node.rb +104 -0
  111. data/apps/network_node/drb_node.rb +90 -0
  112. data/apps/network_node/network_app.rb +9 -0
  113. data/apps/network_node/network_node.rb +471 -0
  114. data/apps/network_node/remote_service.rb +45 -0
  115. data/apps/network_node/secure_node.rb +125 -0
  116. data/apps/network_node/spec/drb_spec.rb +41 -0
  117. data/apps/network_node/spec/network_node_spec_not.rb +264 -0
  118. data/apps/new_network_node/new_network_node.rb +427 -0
  119. data/apps/new_network_node/spec/new_network_node_spec.rb +186 -0
  120. data/apps/node_broadcast/node_broadcast.rb +167 -0
  121. data/apps/node_broadcast/spec/node_broadcast_spec.rb +59 -0
  122. data/apps/permaspace/permaspace.rb +47 -0
  123. data/apps/plaindb/lib/btree.rb +38 -0
  124. data/apps/plaindb/plaindb.rb +199 -0
  125. data/apps/plaindb/spec/table_write_spec.rb +36 -0
  126. data/apps/routed_network/routed_network.rb +23 -0
  127. data/apps/routed_network/spec/routed_network_spec.rb +17 -0
  128. data/apps/session_manager/session_manager.rb +18 -0
  129. data/apps/spec_output.html +222 -0
  130. data/apps/todo/controllers/todo.rb +87 -0
  131. data/apps/todo/model/comment.rb +10 -0
  132. data/apps/todo/model/project.rb +20 -0
  133. data/apps/todo/model/todo.rb +16 -0
  134. data/apps/todo/model/user.rb +5 -0
  135. data/apps/todo/todo.rb +21 -0
  136. data/apps/todo/views/_commentList.rhtml +7 -0
  137. data/apps/todo/views/_createProject.rhtml +5 -0
  138. data/apps/todo/views/_partList.rhtml +12 -0
  139. data/apps/todo/views/_projectList.rhtml +16 -0
  140. data/apps/todo/views/edit.rhtml +11 -0
  141. data/apps/todo/views/editPart.rhtml +10 -0
  142. data/apps/todo/views/index.rhtml +2 -0
  143. data/apps/todo/views/question.rhtml +4 -0
  144. data/apps/transparent_network/transparent_network.rb +7 -0
  145. data/apps/udp_network/big_transfer.rb +97 -0
  146. data/apps/udp_network/features/information.feature +7 -0
  147. data/apps/udp_network/message_queue.rb +84 -0
  148. data/apps/udp_network/network_interface_api.rb +39 -0
  149. data/apps/udp_network/qos_queue.rb +186 -0
  150. data/apps/udp_network/simple_api.rb +180 -0
  151. data/apps/udp_network/spec/big_transfer_spec.rb +0 -0
  152. data/apps/udp_network/spec/qos_queue_spec.rb +99 -0
  153. data/apps/udp_network/spec/simple_api_spec.rb +35 -0
  154. data/apps/udp_network/spec/udp_network_spec.rb +115 -0
  155. data/apps/udp_network/spec/udp_transceiver_spec.rb +90 -0
  156. data/apps/udp_network/udp_network.rb +196 -0
  157. data/apps/udp_network/udp_transceiver.rb +329 -0
  158. data/apps/wiki/controllers/wiki.rb +56 -0
  159. data/apps/wiki/features/editing.feature +21 -0
  160. data/apps/wiki/layouts/main.rhtml +18 -0
  161. data/apps/wiki/lib/media_wiki_html.rb +35 -0
  162. data/apps/wiki/lib/wikicreole.rb +2147 -0
  163. data/apps/wiki/lib/wikicreole.tt +135 -0
  164. data/apps/wiki/lib/wikitest.rb +158 -0
  165. data/apps/wiki/lib/wikitest.tt +17 -0
  166. data/apps/wiki/model/menu.rb +15 -0
  167. data/apps/wiki/model/page.rb +31 -0
  168. data/apps/wiki/spec/wiki_creole_spec.rb +20 -0
  169. data/apps/wiki/spec/wiki_spec.rb +19 -0
  170. data/apps/wiki/static/Zeichnung.svg +240 -0
  171. data/apps/wiki/static/home.css +134 -0
  172. data/apps/wiki/static/mainMenu.css +32 -0
  173. data/apps/wiki/static/menu.css +99 -0
  174. data/apps/wiki/views/_mainMenu.rhtml +3 -0
  175. data/apps/wiki/views/_menu.rhtml +13 -0
  176. data/apps/wiki/views/edit.rhtml +13 -0
  177. data/apps/wiki/views/index.rhtml +2 -0
  178. data/apps/wiki/views/save.rhtml +1 -0
  179. data/apps/wiki/wiki.rb +17 -0
  180. data/bin/appswarm +47 -0
  181. data/cucumber.yml +2 -0
  182. data/data/PermaspaceApp/AFS_WikiApp_wiki_config +6 -0
  183. data/data/draft.txt +63 -0
  184. data/docs/appswarm_motivation.graffle +0 -0
  185. data/docs/appswarm_pics.graffle/QuickLook/Preview.pdf +0 -0
  186. data/docs/appswarm_pics.graffle/QuickLook/Thumbnail.tiff +0 -0
  187. data/docs/appswarm_pics.graffle/data.plist +63494 -0
  188. data/docs/appswarm_pics.graffle/image1.tiff +0 -0
  189. data/docs/appswarm_pics.graffle/image2.tif +0 -0
  190. data/docs/appswarm_pics.graffle/image3.tif +0 -0
  191. data/docs/appswarm_pics.graffle/image4.tif +0 -0
  192. data/docs/appswarm_pics.graffle/image5.tiff +0 -0
  193. data/docs/routing.graffle +0 -0
  194. data/features/step_definitions/appstart_steps.rb +28 -0
  195. data/features/step_definitions/cluster_steps.rb +18 -0
  196. data/features/step_definitions/testbed_steps.rb +64 -0
  197. data/features/step_definitions/webapp_steps.rb +257 -0
  198. data/features/support/env.rb +7 -0
  199. data/lib/appswarm.rb +127 -0
  200. data/lib/appswarm/README.txt +67 -0
  201. data/lib/appswarm/app_config.rb +19 -0
  202. data/lib/appswarm/application.rb +267 -0
  203. data/lib/appswarm/breaking_mutex.rb +41 -0
  204. data/lib/appswarm/cluster_funcs.rb +157 -0
  205. data/lib/appswarm/cross_spectool.rb +153 -0
  206. data/lib/appswarm/crypt.rb +10 -0
  207. data/lib/appswarm/crypt/crypto.rb +90 -0
  208. data/lib/appswarm/crypt/rsa_key +15 -0
  209. data/lib/appswarm/crypt/rsa_key.pub +5 -0
  210. data/lib/appswarm/crypt/test.rb +27 -0
  211. data/lib/appswarm/dir_tool.rb +41 -0
  212. data/lib/appswarm/event_api.rb +7 -0
  213. data/lib/appswarm/features_helper.rb +44 -0
  214. data/lib/appswarm/global_service.rb +38 -0
  215. data/lib/appswarm/http.rb +1 -0
  216. data/lib/appswarm/http/http_app.rb +257 -0
  217. data/lib/appswarm/http/http_controller.rb +267 -0
  218. data/lib/appswarm/http/http_provider.rb +80 -0
  219. data/lib/appswarm/http/static/favicon.ico +0 -0
  220. data/lib/appswarm/http/static/javascript/._prototype.js +0 -0
  221. data/lib/appswarm/http/static/javascript/prototype.js +2515 -0
  222. data/lib/appswarm/http/webrick_logger.rb +12 -0
  223. data/lib/appswarm/net_service.rb +69 -0
  224. data/lib/appswarm/package.rb +88 -0
  225. data/lib/appswarm/parallel_each.rb +46 -0
  226. data/lib/appswarm/protocols/protocol_dice.rb +25 -0
  227. data/lib/appswarm/proxy_testing.rb +48 -0
  228. data/lib/appswarm/public_api.rb +35 -0
  229. data/lib/appswarm/routing/matrix_math.rb +57 -0
  230. data/lib/appswarm/routing/pca.rb +211 -0
  231. data/lib/appswarm/routing/routetest.rb +85 -0
  232. data/lib/appswarm/routing/routing.rb +326 -0
  233. data/lib/appswarm/routing/spec/nods_spec.rb +23 -0
  234. data/lib/appswarm/routing/spec/pca_spec.rb +27 -0
  235. data/lib/appswarm/routing/spec/routing_spec.rb +91 -0
  236. data/lib/appswarm/secure_con.rb +437 -0
  237. data/lib/appswarm/secure_connection.rb +79 -0
  238. data/lib/appswarm/secure_marshal.rb +137 -0
  239. data/lib/appswarm/service.rb +76 -0
  240. data/lib/appswarm/simple_marshal.rb +96 -0
  241. data/lib/appswarm/simple_marshal_parser.rb +1243 -0
  242. data/lib/appswarm/simple_marshal_parser.tt +158 -0
  243. data/lib/appswarm/spec/application_spec.rb +50 -0
  244. data/lib/appswarm/spec/cluster_spec.rb +2 -0
  245. data/lib/appswarm/spec/hexdist_spec.rb +13 -0
  246. data/lib/appswarm/spec/http_controller_spec.rb +18 -0
  247. data/lib/appswarm/spec/main_spec.rb +6 -0
  248. data/lib/appswarm/spec/parallel_each_spec.rb +30 -0
  249. data/lib/appswarm/spec/secure_connection_spec.rb +108 -0
  250. data/lib/appswarm/spec/secure_marshal_spec.rb +93 -0
  251. data/lib/appswarm/spec/simple_marshal_spec.rb +87 -0
  252. data/lib/appswarm/spec/tools_spec.rb +13 -0
  253. data/lib/appswarm/spec/whiteboard_spec.rb +20 -0
  254. data/lib/appswarm/spec_helper.rb +18 -0
  255. data/lib/appswarm/test_bed.rb +207 -0
  256. data/lib/appswarm/tools.rb +284 -0
  257. data/lib/appswarm/tools/http_tunnel_client.rb +139 -0
  258. data/lib/appswarm/tools/http_tunnel_common.rb +8 -0
  259. data/lib/appswarm/tools/http_tunnel_server.rb +78 -0
  260. data/lib/appswarm/tools/parser/example_data.simple +102 -0
  261. data/lib/appswarm/tools/parser/match_test.rb +14 -0
  262. data/lib/appswarm/tools/parser/parser_lib.rb +165 -0
  263. data/lib/appswarm/tools/parser/parser_test.rb +104 -0
  264. data/lib/appswarm/tools/parser/spec/parser_spec.rb +44 -0
  265. data/lib/appswarm/tools/pipes.rb +95 -0
  266. data/lib/appswarm/tools/spec/tracing_spec.rb +16 -0
  267. data/lib/appswarm/tools/spec/waiting_queue_spec.rb +15 -0
  268. data/lib/appswarm/tools/thread_tool.rb +61 -0
  269. data/lib/appswarm/tools/tracing.rb +84 -0
  270. data/lib/appswarm/tools/treetop_test.rb +20 -0
  271. data/lib/appswarm/tools/treetop_test_grammar.rb +114 -0
  272. data/lib/appswarm/tools/treetop_test_grammar.tt +7 -0
  273. data/lib/appswarm/tools/waiting_prio_queue.rb +47 -0
  274. data/lib/appswarm/tools/waiting_queue.rb +34 -0
  275. data/lib/appswarm/whiteboard.rb +73 -0
  276. data/nettest.rb +50 -0
  277. data/packages/README.txt +1 -0
  278. data/packages/msandbox/data/packages/store/my.txt +1 -0
  279. data/packages/msandbox/interfaces.rb +172 -0
  280. data/packages/msandbox/old/defa.rb +3 -0
  281. data/packages/msandbox/old/test.rb +14 -0
  282. data/packages/msandbox/old/test2.rb +56 -0
  283. data/packages/msandbox/package.rb +67 -0
  284. data/packages/msandbox/packages/store/config.yml +1 -0
  285. data/packages/msandbox/packages/store/main.rb +27 -0
  286. data/packages/msandbox/packages/store/myinclude.rb +7 -0
  287. data/packages/msandbox/packages/store_test/config.yml +1 -0
  288. data/packages/msandbox/packages/store_test/main.rb +9 -0
  289. data/packages/msandbox/server.rb +146 -0
  290. data/packages/msandbox/test.rb +13 -0
  291. data/packages/msandbox/test2.rb +29 -0
  292. data/templates/web/appswarm/controllers/appswarm.rb +41 -0
  293. data/templates/web/appswarm/layouts/main.rhtml +20 -0
  294. data/templates/web/appswarm/models/asmenu.rb +14 -0
  295. data/templates/web/appswarm/models/asuser.rb +30 -0
  296. data/templates/web/appswarm/static/custom.css +15 -0
  297. data/templates/web/appswarm/static/home.css +134 -0
  298. data/templates/web/appswarm/static/mainMenu.css +32 -0
  299. data/templates/web/appswarm/static/menu.css +99 -0
  300. data/templates/web/appswarm/views/_mainMenu.rhtml +5 -0
  301. data/templates/web/appswarm/views/_menu.rhtml +13 -0
  302. data/templates/web/appswarm/views/_userInfo.rhtml +7 -0
  303. data/templates/web/appswarm/views/login.rhtml +9 -0
  304. data/tools/checkPort.rb +11 -0
  305. metadata +379 -0
data/.autotest ADDED
@@ -0,0 +1,124 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/redgreen'
4
+ require 'pp'
5
+
6
+ Autotest.add_hook :initialize do |at|
7
+
8
+ # def self.growl title, msg, img, pri=0, stick=""
9
+ #pp "MUUUUUU"
10
+ #system "growlnotify -H localhost -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{stick}"
11
+ # end
12
+
13
+ # at.extra_files << "../some/external/dependency.rb"
14
+ #
15
+ # at.libs << ":../some/external"
16
+ #
17
+ # at.add_exception 'vendor'
18
+ at.add_exception /\.git/
19
+ at.add_exception /coverage.*/
20
+ at.add_exception /(pkg|spec_output.html|\.autotest|README.txt)/
21
+ at.add_exception /.*\.tif/
22
+ at.add_exception /.*\.DS_Store/
23
+ at.add_exception /.*\.(css|pub|txt)/
24
+ at.add_exception /.*test\.log$/
25
+ #
26
+ # at.add_mapping(/dependency.rb/) do |f, _|
27
+ # at.files_matching(/test_.*rb$/)
28
+ # end
29
+ #
30
+ # %w(TestA TestB).each do |klass|
31
+ # at.extra_class_map[klass] = "test/test_misc.rb"
32
+ # end
33
+ end
34
+ if false
35
+ def growl(title, msg, img, pri=10, stick='')
36
+ #pp "GROWLLLL"
37
+ call="growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{stick}"
38
+ #pp call
39
+ #xexit
40
+ system call
41
+ #pp $?
42
+ #sleep 2
43
+ end
44
+
45
+ def gnotify(autotest)
46
+ # pp "GNOT"
47
+ #pp autotest.results
48
+
49
+
50
+ #8 scenarios
51
+ #1 failed step
52
+ #6 skipped steps
53
+ #55 passed steps
54
+
55
+ # autotest.rsults
56
+ return unless autotest.respond_to?(:results)
57
+ if autotest.results
58
+ autotest.results.each{|line|
59
+ case line
60
+ when /\d+\s.*(failed|skipped|passed)\s.*(steps?|examples?)/
61
+ # pp "FOUND:",$~
62
+ state=$~[1]
63
+ images={"passed"=>"ok","skipped"=>"pending","failed"=>"fail"}
64
+ img="~/Library/autotest/rails_#{images[state]}.png"
65
+ growl "Test Results",$~[0],img
66
+ #.
67
+ end
68
+ }
69
+ end
70
+ #filtered = autotest.results.grep(/\d+\s.*examples?/)
71
+ #pp "FIL"
72
+ #pp filtered
73
+
74
+ #output = filtered.empty? ? '' : filtered.last.slice(/(\d+)\s.*(examples|scenarios)?,\s(\d+)\s.*failures?(?:,\s(\d+)\s.*pending)?/)
75
+ #pp "OUT",output
76
+ #if output =~ /[1-9]\sfailures?/
77
+ #growl "Test Results", "#{output}", "~/Library/autotest/rails_fail.png"
78
+ #elsif output =~ /pending/
79
+ #growl "Test Results", "#{output}", "~/Library/autotest/rails_pending.png"
80
+ #else
81
+ #growl "Test Results", "#{output}", "~/Library/autotest/rails_ok.png"
82
+ #end
83
+ #pp "END"
84
+
85
+ end
86
+
87
+
88
+ ALL_HOOKS = [ :all_good, :died, :green, :initialize,
89
+ :ran_command, :red, :reset, :run_command, :updated, :waiting ]
90
+
91
+ ALL_HOOKS.each{|h|
92
+ Autotest.add_hook h do |at|
93
+ gnotify at
94
+ end
95
+ }
96
+
97
+ Autotest.add_hook :green do |at|
98
+ gnotify at
99
+ end
100
+
101
+ Autotest.add_hook :red do |at|
102
+ pp "red"
103
+ gnotify at
104
+ #"#{at.files_to_test.size} tests failed", "warning"
105
+ end
106
+
107
+
108
+ Autotest.add_hook :all_good do |at|
109
+ gnotify at
110
+ #"All specs passed."
111
+ end
112
+ Autotest.add_hook :ran_command do |at|
113
+ pp "RAN"
114
+ end
115
+
116
+
117
+ # Autotest.add_hook :run_command do |at|
118
+ # system "rake build"
119
+ # end
120
+
121
+
122
+ end
123
+
124
+ require 'autotest/growl'
data/History.txt ADDED
@@ -0,0 +1,7 @@
1
+ === 0.0.1 / 2009-05-07
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+ * first gem release
7
+
data/Manifest.txt ADDED
@@ -0,0 +1,304 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ TODO
7
+ apps/README.txt
8
+ apps/admin/admin.rb
9
+ apps/admin/controllers/admin.rb
10
+ apps/admin/controllers/settings.rb
11
+ apps/admin/controllers/users.rb
12
+ apps/admin/features/access.feature
13
+ apps/admin/features/mountLocal.feature
14
+ apps/admin/features/settings.feature
15
+ apps/admin/features/startApps.feature
16
+ apps/admin/layouts/main.rhtml
17
+ apps/admin/lib/settings.rb
18
+ apps/admin/static/admin.css
19
+ apps/admin/views/_log.rhtml
20
+ apps/admin/views/index.rhtml
21
+ apps/admin/views/info.rhtml
22
+ apps/admin/views/settings.rhtml
23
+ apps/admin/views/settings/_http_app.rhtml
24
+ apps/admin/views/settings/_web_server.rhtml
25
+ apps/admin/views/settings/index.rhtml
26
+ apps/admin/views/users/index.rhtml
27
+ apps/application_provider/application_provider.rb
28
+ apps/blog/blog.rb
29
+ apps/blog/controllers/blog.rb
30
+ apps/blog/views/index.rhtml
31
+ apps/browser_starter/browser_starter.rb
32
+ apps/crypto/crypto.rb
33
+ apps/crypto/crypto_rsa.rb
34
+ apps/crypto/spec/crypto_spec.rb
35
+ apps/directory_service/directory_service.rb
36
+ apps/directory_service/net_application.rb
37
+ apps/directory_service/spec/directory_service_spec.rb
38
+ apps/directory_service/spec/net_application_spec.rb
39
+ apps/global_application_interface/global_application.rb
40
+ apps/global_application_interface/global_application_interface.rb
41
+ apps/global_application_interface/spec/app_api_spec.rb
42
+ apps/global_tuple_space/global_tuple_space.rb
43
+ apps/global_web_proxy/features/session_handling.feature
44
+ apps/global_web_proxy/global_web_proxy.rb
45
+ apps/global_web_proxy/proxy/HTTPProxyServer-Dateien/rdoc-style.css
46
+ apps/global_web_proxy/proxy/HTTPProxyServer.html
47
+ apps/global_web_proxy/proxy/dnstest.rb
48
+ apps/global_web_proxy/proxy/proxy.rb
49
+ apps/global_web_proxy/proxy/wiki.html
50
+ apps/global_web_proxy/proxy/wiki.rb
51
+ apps/global_web_proxy/spec/res1
52
+ apps/global_web_proxy/spec/res2
53
+ apps/global_web_proxy/spec/web_proxy_spec.rb
54
+ apps/global_web_server/global_web_server.rb
55
+ apps/global_web_server/global_web_servlet.rb
56
+ apps/hello_world/controllers/hello_world.rb
57
+ apps/hello_world/features/show_on_local_web_server.feature
58
+ apps/hello_world/features/starting_apps.feature
59
+ apps/hello_world/features/through_global.feature
60
+ apps/hello_world/hello_world.rb
61
+ apps/hello_world/views/get.rhtml
62
+ apps/hello_world/views/index.rhtml
63
+ apps/hello_world/views/post.rhtml
64
+ apps/home/controllers/home.rb
65
+ apps/home/home.rb
66
+ apps/home/layouts/main.rhtml
67
+ apps/home/static/Zeichnung.svg
68
+ apps/home/static/home.css
69
+ apps/home/static/menu.css
70
+ apps/home/views/_appInfo.rhtml
71
+ apps/home/views/_dummy_fill.rhtml
72
+ apps/home/views/_info.rhtml
73
+ apps/home/views/_menu.rhtml
74
+ apps/home/views/index.rhtml
75
+ apps/home/views/overview.rhtml
76
+ apps/local_chunk_store/chunk_store.rb
77
+ apps/local_chunk_store/local_chunk_store.rb
78
+ apps/local_chunk_store/spec/local_chunk_store_spec.rb
79
+ apps/local_file_store/app_configuration.rb
80
+ apps/local_file_store/app_file_store.rb
81
+ apps/local_file_store/cached_file_store.rb
82
+ apps/local_file_store/features/testbed_handling_of_directories.feature
83
+ apps/local_file_store/local_file_store.rb
84
+ apps/local_file_store/spec/app_configuration_spec.rb
85
+ apps/local_file_store/spec/local_file_store_spec.rb
86
+ apps/local_object_storage/lib/cell.rb
87
+ apps/local_object_storage/lib/cellmgr.rb
88
+ apps/local_object_storage/lib/index.rb
89
+ apps/local_object_storage/lib/marshal.rb
90
+ apps/local_object_storage/lib/pagefile.rb
91
+ apps/local_object_storage/lib/persistent_object.rb
92
+ apps/local_object_storage/local_object_storage.rb
93
+ apps/local_object_storage/spec/local_object_storage_spec.rb
94
+ apps/local_secure_file_store/local_secure_file_store.rb
95
+ apps/local_secure_file_store/spec/local_secure_file_store_spec.rb
96
+ apps/local_tuple_space/local_tuple_space.rb
97
+ apps/local_tuple_space/spec/tuple_space_spec.rb
98
+ apps/local_web_server/features/parsing_args.feature
99
+ apps/local_web_server/local_web_server.rb
100
+ apps/logger/logger.rb
101
+ apps/master/master.rb
102
+ apps/master/spec/master_spec.rb
103
+ apps/my_spec_spec.rb
104
+ apps/name_service/name_service.rb
105
+ apps/name_service/spec/name_service_spec.rb
106
+ apps/network_discovery/network_discovery.rb
107
+ apps/network_discovery_localstore/network_discovery_localstore.rb
108
+ apps/network_discovery_udp/network_discovery_udp.rb
109
+ apps/network_lookup/network_lookup.rb
110
+ apps/network_node/abstract_node.rb
111
+ apps/network_node/drb_node.rb
112
+ apps/network_node/network_app.rb
113
+ apps/network_node/network_node.rb
114
+ apps/network_node/remote_service.rb
115
+ apps/network_node/secure_node.rb
116
+ apps/network_node/spec/drb_spec.rb
117
+ apps/network_node/spec/network_node_spec_not.rb
118
+ apps/new_network_node/new_network_node.rb
119
+ apps/new_network_node/spec/new_network_node_spec.rb
120
+ apps/node_broadcast/node_broadcast.rb
121
+ apps/node_broadcast/spec/node_broadcast_spec.rb
122
+ apps/permaspace/permaspace.rb
123
+ apps/plaindb/lib/btree.rb
124
+ apps/plaindb/plaindb.rb
125
+ apps/plaindb/spec/table_write_spec.rb
126
+ apps/routed_network/routed_network.rb
127
+ apps/routed_network/spec/routed_network_spec.rb
128
+ apps/session_manager/session_manager.rb
129
+ apps/spec_output.html
130
+ apps/todo/controllers/todo.rb
131
+ apps/todo/model/comment.rb
132
+ apps/todo/model/project.rb
133
+ apps/todo/model/todo.rb
134
+ apps/todo/model/user.rb
135
+ apps/todo/todo.rb
136
+ apps/todo/views/_commentList.rhtml
137
+ apps/todo/views/_createProject.rhtml
138
+ apps/todo/views/_partList.rhtml
139
+ apps/todo/views/_projectList.rhtml
140
+ apps/todo/views/edit.rhtml
141
+ apps/todo/views/editPart.rhtml
142
+ apps/todo/views/index.rhtml
143
+ apps/todo/views/question.rhtml
144
+ apps/transparent_network/transparent_network.rb
145
+ apps/udp_network/big_transfer.rb
146
+ apps/udp_network/features/information.feature
147
+ apps/udp_network/message_queue.rb
148
+ apps/udp_network/network_interface_api.rb
149
+ apps/udp_network/qos_queue.rb
150
+ apps/udp_network/simple_api.rb
151
+ apps/udp_network/spec/big_transfer_spec.rb
152
+ apps/udp_network/spec/qos_queue_spec.rb
153
+ apps/udp_network/spec/simple_api_spec.rb
154
+ apps/udp_network/spec/udp_network_spec.rb
155
+ apps/udp_network/spec/udp_transceiver_spec.rb
156
+ apps/udp_network/udp_network.rb
157
+ apps/udp_network/udp_transceiver.rb
158
+ apps/wiki/controllers/wiki.rb
159
+ apps/wiki/features/editing.feature
160
+ apps/wiki/layouts/main.rhtml
161
+ apps/wiki/lib/media_wiki_html.rb
162
+ apps/wiki/lib/wikicreole.rb
163
+ apps/wiki/lib/wikicreole.tt
164
+ apps/wiki/lib/wikitest.rb
165
+ apps/wiki/lib/wikitest.tt
166
+ apps/wiki/model/menu.rb
167
+ apps/wiki/model/page.rb
168
+ apps/wiki/spec/wiki_creole_spec.rb
169
+ apps/wiki/spec/wiki_spec.rb
170
+ apps/wiki/static/Zeichnung.svg
171
+ apps/wiki/static/home.css
172
+ apps/wiki/static/mainMenu.css
173
+ apps/wiki/static/menu.css
174
+ apps/wiki/views/_mainMenu.rhtml
175
+ apps/wiki/views/_menu.rhtml
176
+ apps/wiki/views/edit.rhtml
177
+ apps/wiki/views/index.rhtml
178
+ apps/wiki/views/save.rhtml
179
+ apps/wiki/wiki.rb
180
+ bin/appswarm
181
+ cucumber.yml
182
+ data/PermaspaceApp/AFS_WikiApp_wiki_config
183
+ data/draft.txt
184
+ docs/appswarm_motivation.graffle
185
+ docs/appswarm_pics.graffle/QuickLook/Preview.pdf
186
+ docs/appswarm_pics.graffle/QuickLook/Thumbnail.tiff
187
+ docs/appswarm_pics.graffle/data.plist
188
+ docs/appswarm_pics.graffle/image1.tiff
189
+ docs/appswarm_pics.graffle/image2.tif
190
+ docs/appswarm_pics.graffle/image3.tif
191
+ docs/appswarm_pics.graffle/image4.tif
192
+ docs/appswarm_pics.graffle/image5.tiff
193
+ docs/routing.graffle
194
+ features/step_definitions/appstart_steps.rb
195
+ features/step_definitions/cluster_steps.rb
196
+ features/step_definitions/testbed_steps.rb
197
+ features/step_definitions/webapp_steps.rb
198
+ features/support/env.rb
199
+ lib/appswarm.rb
200
+ lib/appswarm/README.txt
201
+ lib/appswarm/app_config.rb
202
+ lib/appswarm/application.rb
203
+ lib/appswarm/breaking_mutex.rb
204
+ lib/appswarm/cluster_funcs.rb
205
+ lib/appswarm/cross_spectool.rb
206
+ lib/appswarm/crypt.rb
207
+ lib/appswarm/crypt/crypto.rb
208
+ lib/appswarm/crypt/rsa_key
209
+ lib/appswarm/crypt/rsa_key.pub
210
+ lib/appswarm/crypt/test.rb
211
+ lib/appswarm/dir_tool.rb
212
+ lib/appswarm/event_api.rb
213
+ lib/appswarm/features_helper.rb
214
+ lib/appswarm/global_service.rb
215
+ lib/appswarm/http.rb
216
+ lib/appswarm/http/http_app.rb
217
+ lib/appswarm/http/http_controller.rb
218
+ lib/appswarm/http/http_provider.rb
219
+ lib/appswarm/http/static/favicon.ico
220
+ lib/appswarm/http/static/javascript/._prototype.js
221
+ lib/appswarm/http/static/javascript/prototype.js
222
+ lib/appswarm/http/webrick_logger.rb
223
+ lib/appswarm/net_service.rb
224
+ lib/appswarm/package.rb
225
+ lib/appswarm/parallel_each.rb
226
+ lib/appswarm/protocols/protocol_dice.rb
227
+ lib/appswarm/proxy_testing.rb
228
+ lib/appswarm/public_api.rb
229
+ lib/appswarm/routing/matrix_math.rb
230
+ lib/appswarm/routing/pca.rb
231
+ lib/appswarm/routing/routetest.rb
232
+ lib/appswarm/routing/routing.rb
233
+ lib/appswarm/routing/spec/nods_spec.rb
234
+ lib/appswarm/routing/spec/pca_spec.rb
235
+ lib/appswarm/routing/spec/routing_spec.rb
236
+ lib/appswarm/secure_con.rb
237
+ lib/appswarm/secure_connection.rb
238
+ lib/appswarm/secure_marshal.rb
239
+ lib/appswarm/service.rb
240
+ lib/appswarm/simple_marshal.rb
241
+ lib/appswarm/simple_marshal_parser.rb
242
+ lib/appswarm/simple_marshal_parser.tt
243
+ lib/appswarm/spec/application_spec.rb
244
+ lib/appswarm/spec/cluster_spec.rb
245
+ lib/appswarm/spec/hexdist_spec.rb
246
+ lib/appswarm/spec/http_controller_spec.rb
247
+ lib/appswarm/spec/main_spec.rb
248
+ lib/appswarm/spec/parallel_each_spec.rb
249
+ lib/appswarm/spec/secure_connection_spec.rb
250
+ lib/appswarm/spec/secure_marshal_spec.rb
251
+ lib/appswarm/spec/simple_marshal_spec.rb
252
+ lib/appswarm/spec/tools_spec.rb
253
+ lib/appswarm/spec/whiteboard_spec.rb
254
+ lib/appswarm/spec_helper.rb
255
+ lib/appswarm/test_bed.rb
256
+ lib/appswarm/tools.rb
257
+ lib/appswarm/tools/http_tunnel_client.rb
258
+ lib/appswarm/tools/http_tunnel_common.rb
259
+ lib/appswarm/tools/http_tunnel_server.rb
260
+ lib/appswarm/tools/parser/example_data.simple
261
+ lib/appswarm/tools/parser/match_test.rb
262
+ lib/appswarm/tools/parser/parser_lib.rb
263
+ lib/appswarm/tools/parser/parser_test.rb
264
+ lib/appswarm/tools/parser/spec/parser_spec.rb
265
+ lib/appswarm/tools/pipes.rb
266
+ lib/appswarm/tools/spec/tracing_spec.rb
267
+ lib/appswarm/tools/spec/waiting_queue_spec.rb
268
+ lib/appswarm/tools/thread_tool.rb
269
+ lib/appswarm/tools/tracing.rb
270
+ lib/appswarm/tools/treetop_test.rb
271
+ lib/appswarm/tools/treetop_test_grammar.rb
272
+ lib/appswarm/tools/treetop_test_grammar.tt
273
+ lib/appswarm/tools/waiting_prio_queue.rb
274
+ lib/appswarm/tools/waiting_queue.rb
275
+ lib/appswarm/whiteboard.rb
276
+ nettest.rb
277
+ packages/README.txt
278
+ packages/msandbox/data/packages/store/my.txt
279
+ packages/msandbox/interfaces.rb
280
+ packages/msandbox/old/defa.rb
281
+ packages/msandbox/old/test.rb
282
+ packages/msandbox/old/test2.rb
283
+ packages/msandbox/package.rb
284
+ packages/msandbox/packages/store/config.yml
285
+ packages/msandbox/packages/store/main.rb
286
+ packages/msandbox/packages/store/myinclude.rb
287
+ packages/msandbox/packages/store_test/config.yml
288
+ packages/msandbox/packages/store_test/main.rb
289
+ packages/msandbox/server.rb
290
+ packages/msandbox/test.rb
291
+ packages/msandbox/test2.rb
292
+ templates/web/appswarm/controllers/appswarm.rb
293
+ templates/web/appswarm/layouts/main.rhtml
294
+ templates/web/appswarm/models/asmenu.rb
295
+ templates/web/appswarm/models/asuser.rb
296
+ templates/web/appswarm/static/custom.css
297
+ templates/web/appswarm/static/home.css
298
+ templates/web/appswarm/static/mainMenu.css
299
+ templates/web/appswarm/static/menu.css
300
+ templates/web/appswarm/views/_mainMenu.rhtml
301
+ templates/web/appswarm/views/_menu.rhtml
302
+ templates/web/appswarm/views/_userInfo.rhtml
303
+ templates/web/appswarm/views/login.rhtml
304
+ tools/checkPort.rb
data/README.txt ADDED
@@ -0,0 +1,373 @@
1
+ = appswarm
2
+
3
+ * http://appswarm.rubyforge.org
4
+
5
+ == DESCRIPTION:
6
+
7
+ AppSwarm is/will be an application framework for developing
8
+ distributed applications across a p2p network. It will be possible
9
+ to develop very different types of services, like database-services,
10
+ object-brokers, app-services, or name-services.
11
+
12
+ == FEATURES/PROBLEMS:
13
+
14
+ * FIX (list of features or problems)
15
+
16
+ == SYNOPSIS:
17
+
18
+ FIX (code sample of usage)
19
+
20
+ == REQUIREMENTS:
21
+
22
+ * mediacloth
23
+ * treetop
24
+ * hoe
25
+
26
+ == INSTALL:
27
+
28
+ * sudo gem install appswarm
29
+
30
+ == LICENSE:
31
+
32
+ (The GPL V2)
33
+
34
+ GNU GENERAL PUBLIC LICENSE
35
+ Version 2, June 1991
36
+
37
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
38
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
39
+ Everyone is permitted to copy and distribute verbatim copies
40
+ of this license document, but changing it is not allowed.
41
+
42
+ Preamble
43
+
44
+ The licenses for most software are designed to take away your
45
+ freedom to share and change it. By contrast, the GNU General Public
46
+ License is intended to guarantee your freedom to share and change free
47
+ software--to make sure the software is free for all its users. This
48
+ General Public License applies to most of the Free Software
49
+ Foundation's software and to any other program whose authors commit to
50
+ using it. (Some other Free Software Foundation software is covered by
51
+ the GNU Library General Public License instead.) You can apply it to
52
+ your programs, too.
53
+
54
+ When we speak of free software, we are referring to freedom, not
55
+ price. Our General Public Licenses are designed to make sure that you
56
+ have the freedom to distribute copies of free software (and charge for
57
+ this service if you wish), that you receive source code or can get it
58
+ if you want it, that you can change the software or use pieces of it
59
+ in new free programs; and that you know you can do these things.
60
+
61
+ To protect your rights, we need to make restrictions that forbid
62
+ anyone to deny you these rights or to ask you to surrender the rights.
63
+ These restrictions translate to certain responsibilities for you if you
64
+ distribute copies of the software, or if you modify it.
65
+
66
+ For example, if you distribute copies of such a program, whether
67
+ gratis or for a fee, you must give the recipients all the rights that
68
+ you have. You must make sure that they, too, receive or can get the
69
+ source code. And you must show them these terms so they know their
70
+ rights.
71
+
72
+ We protect your rights with two steps: (1) copyright the software, and
73
+ (2) offer you this license which gives you legal permission to copy,
74
+ distribute and/or modify the software.
75
+
76
+ Also, for each author's protection and ours, we want to make certain
77
+ that everyone understands that there is no warranty for this free
78
+ software. If the software is modified by someone else and passed on, we
79
+ want its recipients to know that what they have is not the original, so
80
+ that any problems introduced by others will not reflect on the original
81
+ authors' reputations.
82
+
83
+ Finally, any free program is threatened constantly by software
84
+ patents. We wish to avoid the danger that redistributors of a free
85
+ program will individually obtain patent licenses, in effect making the
86
+ program proprietary. To prevent this, we have made it clear that any
87
+ patent must be licensed for everyone's free use or not licensed at all.
88
+
89
+ The precise terms and conditions for copying, distribution and
90
+ modification follow.
91
+
92
+ GNU GENERAL PUBLIC LICENSE
93
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
94
+
95
+ 0. This License applies to any program or other work which contains
96
+ a notice placed by the copyright holder saying it may be distributed
97
+ under the terms of this General Public License. The "Program", below,
98
+ refers to any such program or work, and a "work based on the Program"
99
+ means either the Program or any derivative work under copyright law:
100
+ that is to say, a work containing the Program or a portion of it,
101
+ either verbatim or with modifications and/or translated into another
102
+ language. (Hereinafter, translation is included without limitation in
103
+ the term "modification".) Each licensee is addressed as "you".
104
+
105
+ Activities other than copying, distribution and modification are not
106
+ covered by this License; they are outside its scope. The act of
107
+ running the Program is not restricted, and the output from the Program
108
+ is covered only if its contents constitute a work based on the
109
+ Program (independent of having been made by running the Program).
110
+ Whether that is true depends on what the Program does.
111
+
112
+ 1. You may copy and distribute verbatim copies of the Program's
113
+ source code as you receive it, in any medium, provided that you
114
+ conspicuously and appropriately publish on each copy an appropriate
115
+ copyright notice and disclaimer of warranty; keep intact all the
116
+ notices that refer to this License and to the absence of any warranty;
117
+ and give any other recipients of the Program a copy of this License
118
+ along with the Program.
119
+
120
+ You may charge a fee for the physical act of transferring a copy, and
121
+ you may at your option offer warranty protection in exchange for a fee.
122
+
123
+ 2. You may modify your copy or copies of the Program or any portion
124
+ of it, thus forming a work based on the Program, and copy and
125
+ distribute such modifications or work under the terms of Section 1
126
+ above, provided that you also meet all of these conditions:
127
+
128
+ a) You must cause the modified files to carry prominent notices
129
+ stating that you changed the files and the date of any change.
130
+
131
+ b) You must cause any work that you distribute or publish, that in
132
+ whole or in part contains or is derived from the Program or any
133
+ part thereof, to be licensed as a whole at no charge to all third
134
+ parties under the terms of this License.
135
+
136
+ c) If the modified program normally reads commands interactively
137
+ when run, you must cause it, when started running for such
138
+ interactive use in the most ordinary way, to print or display an
139
+ announcement including an appropriate copyright notice and a
140
+ notice that there is no warranty (or else, saying that you provide
141
+ a warranty) and that users may redistribute the program under
142
+ these conditions, and telling the user how to view a copy of this
143
+ License. (Exception: if the Program itself is interactive but
144
+ does not normally print such an announcement, your work based on
145
+ the Program is not required to print an announcement.)
146
+
147
+ These requirements apply to the modified work as a whole. If
148
+ identifiable sections of that work are not derived from the Program,
149
+ and can be reasonably considered independent and separate works in
150
+ themselves, then this License, and its terms, do not apply to those
151
+ sections when you distribute them as separate works. But when you
152
+ distribute the same sections as part of a whole which is a work based
153
+ on the Program, the distribution of the whole must be on the terms of
154
+ this License, whose permissions for other licensees extend to the
155
+ entire whole, and thus to each and every part regardless of who wrote it.
156
+
157
+ Thus, it is not the intent of this section to claim rights or contest
158
+ your rights to work written entirely by you; rather, the intent is to
159
+ exercise the right to control the distribution of derivative or
160
+ collective works based on the Program.
161
+
162
+ In addition, mere aggregation of another work not based on the Program
163
+ with the Program (or with a work based on the Program) on a volume of
164
+ a storage or distribution medium does not bring the other work under
165
+ the scope of this License.
166
+
167
+ 3. You may copy and distribute the Program (or a work based on it,
168
+ under Section 2) in object code or executable form under the terms of
169
+ Sections 1 and 2 above provided that you also do one of the following:
170
+
171
+ a) Accompany it with the complete corresponding machine-readable
172
+ source code, which must be distributed under the terms of Sections
173
+ 1 and 2 above on a medium customarily used for software interchange; or,
174
+
175
+ b) Accompany it with a written offer, valid for at least three
176
+ years, to give any third party, for a charge no more than your
177
+ cost of physically performing source distribution, a complete
178
+ machine-readable copy of the corresponding source code, to be
179
+ distributed under the terms of Sections 1 and 2 above on a medium
180
+ customarily used for software interchange; or,
181
+
182
+ c) Accompany it with the information you received as to the offer
183
+ to distribute corresponding source code. (This alternative is
184
+ allowed only for noncommercial distribution and only if you
185
+ received the program in object code or executable form with such
186
+ an offer, in accord with Subsection b above.)
187
+
188
+ The source code for a work means the preferred form of the work for
189
+ making modifications to it. For an executable work, complete source
190
+ code means all the source code for all modules it contains, plus any
191
+ associated interface definition files, plus the scripts used to
192
+ control compilation and installation of the executable. However, as a
193
+ special exception, the source code distributed need not include
194
+ anything that is normally distributed (in either source or binary
195
+ form) with the major components (compiler, kernel, and so on) of the
196
+ operating system on which the executable runs, unless that component
197
+ itself accompanies the executable.
198
+
199
+ If distribution of executable or object code is made by offering
200
+ access to copy from a designated place, then offering equivalent
201
+ access to copy the source code from the same place counts as
202
+ distribution of the source code, even though third parties are not
203
+ compelled to copy the source along with the object code.
204
+
205
+ 4. You may not copy, modify, sublicense, or distribute the Program
206
+ except as expressly provided under this License. Any attempt
207
+ otherwise to copy, modify, sublicense or distribute the Program is
208
+ void, and will automatically terminate your rights under this License.
209
+ However, parties who have received copies, or rights, from you under
210
+ this License will not have their licenses terminated so long as such
211
+ parties remain in full compliance.
212
+
213
+ 5. You are not required to accept this License, since you have not
214
+ signed it. However, nothing else grants you permission to modify or
215
+ distribute the Program or its derivative works. These actions are
216
+ prohibited by law if you do not accept this License. Therefore, by
217
+ modifying or distributing the Program (or any work based on the
218
+ Program), you indicate your acceptance of this License to do so, and
219
+ all its terms and conditions for copying, distributing or modifying
220
+ the Program or works based on it.
221
+
222
+ 6. Each time you redistribute the Program (or any work based on the
223
+ Program), the recipient automatically receives a license from the
224
+ original licensor to copy, distribute or modify the Program subject to
225
+ these terms and conditions. You may not impose any further
226
+ restrictions on the recipients' exercise of the rights granted herein.
227
+ You are not responsible for enforcing compliance by third parties to
228
+ this License.
229
+
230
+ 7. If, as a consequence of a court judgment or allegation of patent
231
+ infringement or for any other reason (not limited to patent issues),
232
+ conditions are imposed on you (whether by court order, agreement or
233
+ otherwise) that contradict the conditions of this License, they do not
234
+ excuse you from the conditions of this License. If you cannot
235
+ distribute so as to satisfy simultaneously your obligations under this
236
+ License and any other pertinent obligations, then as a consequence you
237
+ may not distribute the Program at all. For example, if a patent
238
+ license would not permit royalty-free redistribution of the Program by
239
+ all those who receive copies directly or indirectly through you, then
240
+ the only way you could satisfy both it and this License would be to
241
+ refrain entirely from distribution of the Program.
242
+
243
+ If any portion of this section is held invalid or unenforceable under
244
+ any particular circumstance, the balance of the section is intended to
245
+ apply and the section as a whole is intended to apply in other
246
+ circumstances.
247
+
248
+ It is not the purpose of this section to induce you to infringe any
249
+ patents or other property right claims or to contest validity of any
250
+ such claims; this section has the sole purpose of protecting the
251
+ integrity of the free software distribution system, which is
252
+ implemented by public license practices. Many people have made
253
+ generous contributions to the wide range of software distributed
254
+ through that system in reliance on consistent application of that
255
+ system; it is up to the author/donor to decide if he or she is willing
256
+ to distribute software through any other system and a licensee cannot
257
+ impose that choice.
258
+
259
+ This section is intended to make thoroughly clear what is believed to
260
+ be a consequence of the rest of this License.
261
+
262
+ 8. If the distribution and/or use of the Program is restricted in
263
+ certain countries either by patents or by copyrighted interfaces, the
264
+ original copyright holder who places the Program under this License
265
+ may add an explicit geographical distribution limitation excluding
266
+ those countries, so that distribution is permitted only in or among
267
+ countries not thus excluded. In such case, this License incorporates
268
+ the limitation as if written in the body of this License.
269
+
270
+ 9. The Free Software Foundation may publish revised and/or new versions
271
+ of the General Public License from time to time. Such new versions will
272
+ be similar in spirit to the present version, but may differ in detail to
273
+ address new problems or concerns.
274
+
275
+ Each version is given a distinguishing version number. If the Program
276
+ specifies a version number of this License which applies to it and "any
277
+ later version", you have the option of following the terms and conditions
278
+ either of that version or of any later version published by the Free
279
+ Software Foundation. If the Program does not specify a version number of
280
+ this License, you may choose any version ever published by the Free Software
281
+ Foundation.
282
+
283
+ 10. If you wish to incorporate parts of the Program into other free
284
+ programs whose distribution conditions are different, write to the author
285
+ to ask for permission. For software which is copyrighted by the Free
286
+ Software Foundation, write to the Free Software Foundation; we sometimes
287
+ make exceptions for this. Our decision will be guided by the two goals
288
+ of preserving the free status of all derivatives of our free software and
289
+ of promoting the sharing and reuse of software generally.
290
+
291
+ NO WARRANTY
292
+
293
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
294
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
295
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
296
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
297
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
298
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
299
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
300
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
301
+ REPAIR OR CORRECTION.
302
+
303
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
304
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
305
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
306
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
307
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
308
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
309
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
310
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
311
+ POSSIBILITY OF SUCH DAMAGES.
312
+
313
+ END OF TERMS AND CONDITIONS
314
+
315
+ How to Apply These Terms to Your New Programs
316
+
317
+ If you develop a new program, and you want it to be of the greatest
318
+ possible use to the public, the best way to achieve this is to make it
319
+ free software which everyone can redistribute and change under these terms.
320
+
321
+ To do so, attach the following notices to the program. It is safest
322
+ to attach them to the start of each source file to most effectively
323
+ convey the exclusion of warranty; and each file should have at least
324
+ the "copyright" line and a pointer to where the full notice is found.
325
+
326
+ <one line to give the program's name and a brief idea of what it does.>
327
+ Copyright (C) <year> <name of author>
328
+
329
+ This program is free software; you can redistribute it and/or modify
330
+ it under the terms of the GNU General Public License as published by
331
+ the Free Software Foundation; either version 2 of the License, or
332
+ (at your option) any later version.
333
+
334
+ This program is distributed in the hope that it will be useful,
335
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
336
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
337
+ GNU General Public License for more details.
338
+
339
+ You should have received a copy of the GNU General Public License
340
+ along with this program; if not, write to the Free Software
341
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
342
+
343
+
344
+ Also add information on how to contact you by electronic and paper mail.
345
+
346
+ If the program is interactive, make it output a short notice like this
347
+ when it starts in an interactive mode:
348
+
349
+ Gnomovision version 69, Copyright (C) year name of author
350
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
351
+ This is free software, and you are welcome to redistribute it
352
+ under certain conditions; type `show c' for details.
353
+
354
+ The hypothetical commands `show w' and `show c' should show the appropriate
355
+ parts of the General Public License. Of course, the commands you use may
356
+ be called something other than `show w' and `show c'; they could even be
357
+ mouse-clicks or menu items--whatever suits your program.
358
+
359
+ You should also get your employer (if you work as a programmer) or your
360
+ school, if any, to sign a "copyright disclaimer" for the program, if
361
+ necessary. Here is a sample; alter the names:
362
+
363
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
364
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
365
+
366
+ <signature of Ty Coon>, 1 April 1989
367
+ Ty Coon, President of Vice
368
+
369
+ This General Public License does not permit incorporating your program into
370
+ proprietary programs. If your program is a subroutine library, you may
371
+ consider it more useful to permit linking proprietary applications with the
372
+ library. If this is what you want to do, use the GNU Library General
373
+ Public License instead of this License.