s41c 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -28,13 +28,14 @@ TCP-socket-сервер и клиент для платформы "1С:Пред
28
28
  server.start
29
29
 
30
30
  Или чуть сложнее: запустить сервер для 1С:Предприятия (локальная версия) на
31
- 127.0.0.1:2000, использовать базу "C:\Base\", при подключении требовать логин
32
- "username" и пароль "password", писать лог в c:\server.log и записать время
33
- остановки сервера в файл
31
+ 127.0.0.1:2000, разрешать подключения только с адреса 123.45.67.8, использовать
32
+ базу "C:\Base\", при подключении требовать логин "username" и пароль "password",
33
+ писать лог в c:\server.log и записать время остановки сервера в файл
34
34
 
35
35
  require 's41c'
36
36
 
37
37
  server = S41C::Server.new('127.0.0.1', 2000, 'c:\server.log')
38
+ server.white_list('123.45.67.8')
38
39
  server.ole_name = 'V77L.Application'
39
40
  server.db('C:\Base\\')
40
41
 
@@ -51,7 +52,10 @@ TCP-socket-сервер и клиент для платформы "1С:Пред
51
52
  При подключении можно указать хост и порт сервера (если не указаны, будут
52
53
  использоваться localhost:1421), а также данные для авторизации. После
53
54
  подключения на сервер передаётся руби-код, который и выполняет все,
54
- что нам нужно
55
+ что нам нужно.
56
+ Внимание! В передаваемом коде нельзя использовать комментарии и условия вида
57
+ "do_somthing if some_condition", вместо это следует писать "if some_condition
58
+ do_somthing;end", аналогично для unless
55
59
 
56
60
  require 's41c'
57
61
 
@@ -9,12 +9,13 @@ module S41C
9
9
  # Создать инстанс клиента
10
10
  #
11
11
  # @param [ String ] адрес сервера
12
- # @param [ Integer ] порт сервера
13
- def initialize(host='localhost', port=1421)
12
+ # @param [ Integer ] порт сервера (по умолчанию 1421)
13
+ # @param [ Integer ] таймаут (по умолчанию 30 секунд)
14
+ def initialize(host='localhost', port=1421, timeout=30)
14
15
  require 'net/telnet'
15
16
  require 's41c/parser'
16
17
 
17
- @host, @port = host, port
18
+ @host, @port, @timeout = host, port, timeout
18
19
  @prompt = /^\+OK/n
19
20
  @errors = []
20
21
 
@@ -81,7 +82,11 @@ module S41C
81
82
  return true if @client
82
83
  begin
83
84
 
84
- @client = Net::Telnet.new('Host' => @host, 'Port' => @port, "Prompt" => @prompt)
85
+ @client = Net::Telnet.new('Host' => @host,
86
+ 'Port' => @port,
87
+ 'Prompt' => @prompt,
88
+ 'Timeout' => @timeout
89
+ )
85
90
 
86
91
  if @login
87
92
  resp = @client.login(@login, @password)
@@ -4,7 +4,7 @@ module S41C #:nodoc
4
4
 
5
5
  class Parser #:nodoc
6
6
 
7
- BLOCK_BEGINNERS = /\b(module|class|def|begin|do|case|if|unless)\b|{/
7
+ BLOCK_BEGINNERS = /\b(module|class|def|begin|do|case|if|unless|while|until)\b|{/
8
8
  BLOCK_ENDERS = /\bend\b|}/
9
9
 
10
10
  #:nodoc
@@ -7,8 +7,10 @@ module S41C #:nodoc
7
7
  include S41C::Utils
8
8
 
9
9
  #:nodoc
10
- def initialize(ole, dump)
10
+ def initialize(ole, local_storage, dump)
11
11
  @ole = ole
12
+ @local_storage = local_storage
13
+
12
14
  dump.untaint
13
15
  hsh = Marshal.load(dump.unpack('m')[0])
14
16
 
@@ -19,6 +19,8 @@ module S41C
19
19
  @logger = log_file ? ::STDOUT.reopen(log_file, 'a') : ::STDOUT
20
20
  @ole_name = 'V77.Application'
21
21
 
22
+ @local_storage = {}
23
+
22
24
  end
23
25
 
24
26
  # Задать данные для авторизации подключающихся клиентов
@@ -32,6 +34,9 @@ module S41C
32
34
  self
33
35
  end
34
36
 
37
+ # Задать IP-адреса, с которых разрешено подключение
38
+ #
39
+ # @param [ Array ] список адресов
35
40
  def white_list(*args)
36
41
  @white_list = args
37
42
  end
@@ -125,7 +130,7 @@ module S41C
125
130
  def eval_code(dump)
126
131
  return "Error: not connected to 1C" unless @conn
127
132
 
128
- S41C::Sandbox.new(@ole, dump).eval_code
133
+ S41C::Sandbox.new(@ole, @local_storage, dump).eval_code
129
134
  end
130
135
 
131
136
  def main_loop(server)
@@ -1,5 +1,5 @@
1
1
  module S41C
2
2
 
3
- VERSION = '0.0.9'
3
+ VERSION = '0.1.0'
4
4
 
5
5
  end # S41C
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s41c
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-27 00:00:00.000000000 Z
12
+ date: 2012-04-30 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: TCP-socket сервер и клиент для платформы "1С:Предприятие"
15
15
  email:
@@ -20,7 +20,6 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - LICENSE.BSD
22
22
  - s41c.gemspec
23
- - s41c-0.0.6.gem
24
23
  - README.md
25
24
  - lib/s41c/sandbox.rb
26
25
  - lib/s41c/version.rb
@@ -29,10 +28,8 @@ files:
29
28
  - lib/s41c/server.rb
30
29
  - lib/s41c/client.rb
31
30
  - lib/s41c.rb
32
- - s41c-0.0.8.gem
33
31
  - Gemfile
34
32
  - Rakefile
35
- - s41c-0.0.7.gem
36
33
  homepage: https://github.com/dancingbytes/s41c
37
34
  licenses: []
38
35
  post_install_message:
Binary file
Binary file
Binary file