s41c 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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