Project

General

Profile

Enhancement #31

Preliminary DNS Bot

Added by Marc Dequènes over 10 years ago. Updated over 9 years ago.

Status:
Resolved
Priority:
Normal
Category:
Bot :: MapMaker
Target version:
Start date:
2010-04-05
Due date:
% Done:

100%

Estimated time:
Patch Available:
No
Found in Versions:
Confirmed:
No
Branch:
Help Needed:

Description

Orders to implement:
  • check presence of zone file
  • read entire zone file (adapt existing code)
  • write entire zone file (adapt existing code)

Support UNIX socket middleware backend only.


Related issues

Blocked by CyborgHood - Documentation #30: Establish a Preliminary inter-bot discussion protocolResolved2010-04-05

Actions
Blocks CyborgHood - Enhancement #32: Adapt Postman to use Librarian and MapMaker BotsIn Progress2010-04-05

Actions

Associated revisions

Revision ecdabe95 (diff)
Added by Marc Dequènes about 10 years ago

[evol] uncomplete MapMaker bot implementation (global cyborg classes, use of EventMachine with UNIX socket backend, configuration adjustments, ...) (refs #31)

Revision 050eca43 (diff)
Added by Marc Dequènes about 10 years ago

[evol] first raw cyborg API exposure implementation for MapMaker (refs #31)

Revision ce98dac2 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API (refs #31)

Revision f94d64b1 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #2 (refs #31)

Revision bc473567 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #3 (refs #31)

Revision a3483167 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #4 (refs #31)

Revision 1c89625f (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #5 (refs #31)

Revision 41802ec1 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #6 (refs #31)

Revision 8fcaacd6 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #7 (refs #31)

Revision f9971af0 (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #8 (refs #31)

Revision 2c547ffe (diff)
Added by Marc Dequènes about 10 years ago

[evol] work on cyborg server protocol and API #9 (refs #31)

Revision ca79e27e (diff)
Added by Marc Dequènes about 10 years ago

[evol] reworked DNS classes (refs #31)

Revision e82a264b (diff)
Added by Marc Dequènes about 10 years ago

[evol] added session management to the cyborg server (refs #31)

History

#1

Updated by Marc Dequènes over 10 years ago

  • Target version changed from 0.3.0 to 0.4.0
#2

Updated by Marc Dequènes about 10 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 40

After a few research and experimentations, i settled on EventMachine in order not to re-invent the wheel. The UNIX socket support is there, with a line-by-line text support, and adding an XMPP backend should not be too difficult.

Currently i focused on a base protocol, SMTP-like, which is not completely wired, and the link with objects. It is currently possible to navigate in a tree of virtual objects, and constructing it is now quite easy. Argument passing is ordered in a YAML sequence, to ease mapping with methods (one can still use named arguments with a single Hash parameter).

Also, the DNS class has been revamped completely.

What needs to be done now:
  • cleanup protocol handling (the Interface class should not know about anything on that level, sort out the SMTP-like codes, and document the protocol, rework commands replies too)
  • we need to create a session, linked to the connection and dying with it, to have instances of some objects keep a specific state over time (to be able to chain commands and have objects remembering the previous steps) (only needed for a few choosen classes, like Services::DNS::Zone)
  • test more the new DNS class
#3

Updated by Marc Dequènes about 10 years ago

A locking mechanism is necessary to ensure concurrent access don't tread on each other:
  • do not allow write when someone else has requested an exclusive access to the resource
  • delay read when someone is writing

A lock is released when the client ask for it, or when it leaves and his session is removed. It may be useful to care about long idle times and kick dead clients.

#4

Updated by Marc Dequènes about 10 years ago

  • % Done changed from 40 to 50

The session support is done. The DNS class has received many fixes. Several other fixes and improvements were made.

Clients generating too much errors are terminated now. Other connection checks, as well as locking would be made later and in another BR.

#5

Updated by Marc Dequènes over 9 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 50 to 100

No locking yet, and several issues will be assigned to further releases.

Also available in: Atom PDF