RE:NODE

სახელმძღვანელოები11 წუთის საკითხავი

Unturned-ის OpenMod plugin-ები და უფლებები

OpenMod Unturned-ის სერვერზე: რით განსხვავდება RocketMod-ისგან, დაყენება Rocket-ის გვერდით, NuGet plugin-ები, YAML როლები და უფლებები, ჩატვირთვის შეცდომები.

0 მკითხველი

OpenMod Unturned-ის ორი plugin framework-იდან უფრო ახალია. ის თამაშის გვერდით მოდულად ყენდება, თავის ფაილებს სერვერის instance-ის შიგნით OpenMod საქაღალდეში ინახავს, plugin-ებს NuGet პაკეტებად აყენებს openmod install <PackageId>-ით და მართავს, ვის რისი გაშვება შეუძლია, ორი YAML ფაილით: openmod.roles.yaml და openmod.users.yaml. ის RocketMod-ს არ ცვლის. ის მის გვერდით სამუშაოდაა დაპროექტებული, Rocket-ის plugin-ების ჩატვირთვა თავსებადობის ფენით შეუძლია და Rocket-ის უფლებების მონაცემების გაზიარებაც. არჩევის პრაქტიკული წესი: Unturned-ის არსებული plugin-ების უმეტესობა RocketMod-ისთვის ქვეყნდება, ამიტომ იქიდან დაიწყე, OpenMod კი დაამატე, როცა სასურველი plugin მხოლოდ მისთვის ქვეყნდება ან საკუთარს წერ.

ეს გზამკვლევი ხსნის, რით განსხვავდება ორი framework, OpenMod-ის დაყენებას სერვერზე, რომელსაც უკვე აქვს Rocket, plugin-ების დაყენებას, უფლებების სისტემას დეტალურად, როგორ მუშაობს Rocket-ის ხიდი და გაუმართაობებს, რომლებსაც შეხვდები. Rocket-ის მხარე განხილულია Unturned-ის Commands.dat-სა და RocketMod plugin-ებში.

OpenMod და RocketMod შედარებით#

RocketMod (LDM)OpenMod
საიდან მოდისსერვერს მოყვება Extras-ში, თამაშთან ერთად ივლებაცალკე პროექტი, მისი გამოშვებებიდან ყენდება
plugin-ის ფორმატიDLL-ები Rocket/Plugins/-შიNuGet პაკეტები, ან DLL-ები OpenMod/plugins/-ში
კონფიგურაციაXMLYAML
უფლებებიჯგუფები Permissions.config.xml-შიროლები და მომხმარებლები YAML ფაილებში
plugin-ების კატალოგიდიდი, წლების plugin-ებიუფრო პატარა
დიზაინიმარტივი, სინქრონულითანამედროვე .NET: dependency injection, async, საერთო სერვისები

ამ შედარებისთვის RocketMod-ის ისტორიას მნიშვნელობა აქვს: თავდაპირველი პროექტი დაარქივდა, და ვერსია, რომელსაც დღეს იღებ, არის Legally Distinct Missile, რომელსაც Smartly Dressed Games უვლის და გამოყოფილ სერვერთან ერთად აწვდის. ის სტაბილურია და თითქმის ყველა plugin მას ემიზნება.

OpenMod Rocket-ის ერთ-ერთმა თავდაპირველმა მომვლელმა დაწერა თანამედროვე .NET პრაქტიკით: plugin-ები პაკეტებია გამოცხადებული დამოკიდებულებებით, სერვისები, როგორიცაა ეკონომიკა ან უფლებები, ინტერფეისებით იზიარება, ნაცვლად იმისა, რომ ყოველი plugin საკუთარს აწყობდეს, კონფიგურაცია კი YAML-ია. plugin-ის ავტორისთვის ეს უფრო სასიამოვნო პლატფორმაა. სერვერის მფლობელისთვის მნიშვნელოვანია, რომ სასურველი plugin მისთვის არსებობდეს და მისი დამოკიდებულებები გადაწყდეს.

ორივეს გაშვება ნორმალურია. ტიპური სერვერი Rocket-ს იყენებს დამკვიდრებული plugin-ების დიდი კატალოგისთვის, OpenMod-ს კი რამდენიმესთვის, რომლებიც მხოლოდ იქ ქვეყნდება.

OpenMod-ის დაყენება#

RE:NODE-ზე Unturned-ის სერვერებს RocketMod უკვე Modules საქაღალდეში მოყვება, ამიტომ OpenMod-ს ყოველთვის Rocket-ის გვერდით აყენებ და არა მის ნაცვლად. ორი გზა არსებობს.

installer plugin

ყველაზე მარტივი პატარა Rocket plugin-ია, რომელიც OpenMod-ს შენთვის აყენებს.

  1. გააჩერე სერვერი და instance საქაღალდის backup გააკეთე.
  2. ჩამოტვირთე OpenMod-ის installer plugin RocketMod-ისთვის OpenMod პროექტის გამოშვებებიდან და DLL ჩადე Servers/<ServerID>/Rocket/Plugins/-ში.
  3. გაუშვი სერვერი და დაელოდე, სანამ Rocket installer-ს ჩატვირთავს.
  4. კონსოლში გაუშვი openmod install და გამონატანს მიჰყევი.
  5. გადატვირთე, როცა გეტყვის.

ხელით დაყენება

  1. გააჩერე სერვერი და გააკეთე backup.
  2. ჩამოტვირთე Unturned-ის მოდული OpenMod პროექტის გამოშვებებიდან.
  3. გახსენი ისე, რომ მისი მოდულის საქაღალდე პირდაპირ სერვერის Modules დირექტორიაში იდოს, Rocket.Unturned-ის გვერდით.
  4. გაუშვი სერვერი.
code
U3DS/  Modules/    Rocket.Unturned/    OpenMod.Unturned/  Servers/    MyServer/      Rocket/      OpenMod/

დაყენების შემდეგ პირველი გაშვება ნელია. OpenMod თავის კომპონენტებს NuGet პაკეტებად ჩამოტვირთავს, რასაც სერვერიდან გამავალი ინტერნეტი სჭირდება და პირველ გაშვებაზე დიდ დროს იკავებს. საათის ნაცვლად კონსოლს უყურე, და როცა დაწყნარდება, გაუშვი modules, რომ დარწმუნდე, რომ ორივე მოდული ჩატვირთულია.

რას შეიცავს OpenMod საქაღალდე#

პირველი გაშვების შემდეგ OpenMod instance-ში თავის სამუშაო საქაღალდეს ქმნის:

code
Servers/MyServer/OpenMod/  openmod.yaml              core settings  openmod.unturned.yaml     Unturned-specific settings, including the Rocket bridge  openmod.roles.yaml        roles and their permissions  openmod.users.yaml        players, their roles and personal permissions  logging.yaml              log levels and outputs  packages/                 NuGet packages, including installed plugins  plugins/                  plugin DLLs added by hand, and each plugin's config  logs/                     OpenMod's own logs

ფაილების ზუსტი ნაკრები ყოველ გამოშვებასთან ოდნავ იზრდება. ორი ჩვევა მას სამართავს ხდის: არედაქტირე მხოლოდ გაჩერებული სერვერით ან შემდეგ გადატვირთე კონფიგურაცია, და ეს საქაღალდე შენს backup-ებში შეინახე - ის ყოველ შენ მიერ მინიჭებულ უფლებას ინახავს.

plugin-ების დაყენება#

OpenMod-ის plugin-ები ჩვეულებრივ NuGet პაკეტებად ქვეყნდება, კონსოლი კი მათ პაკეტის ID-ით აყენებს:

code
openmod install <PackageId>openmod install <PackageId> <version>openmod remove <PackageId>help openmod

პაკეტის ID plugin-ის გვერდზეა. დაყენება პაკეტსა და მის დამოკიდებულებებს packages/-ში ჩამოიტანს, და plugin-ების უმეტესობას ჩასატვირთად გადატვირთვა სჭირდება. help openmod ჩამოთვლის ქვებრძანებებს, რომლებსაც შენი ვერსია უჭერს მხარს, რისი შემოწმებაც ღირს, რადგან ისინი გამოშვებებს შორის იცვლებოდა.

plugin, რომელიც უბრალო DLL-ად ვრცელდება, მის ნაცვლად OpenMod/plugins/-ში მიდის, ყველა ბიბლიოთეკასთან ერთად, რომელიც მას სჭირდება.

პირველი ჩატვირთვისას plugin ჩვეულებრივ ფაილების საკუთარ საქაღალდეს ქმნის - config.yaml პარამეტრებისთვის და translations.yaml შეტყობინებებისთვის. ჩვეულებრივი რუტინა:

  1. დააყენე plugin და გადატვირთე.
  2. წაიკითხე კონსოლი. დარწმუნდი, რომ plugin შეცდომების გარეშე ჩაიტვირთა.
  3. გააჩერე სერვერი, დაარედაქტირე plugin-ის გენერირებული კონფიგურაცია, ისევ გაუშვი.
  4. მიანიჭე მისი უფლებები როლს (შემდეგი სექცია).
  5. გატესტე როგორც ჩვეულებრივმა მოთამაშემ და არა როგორც ადმინმა.

სწორედ მეოთხე ნაბიჯზე მთავრდება "plugin არ მუშაობს" შეტყობინებების უმეტესობა, ზუსტად ისე, როგორც Rocket-თან.

როლები, მომხმარებლები და უფლებები#

OpenMod-ის უფლებები <ComponentId>:<permission> ფორმის სტრიქონებია. კომპონენტი არის plugin ან framework, რომელსაც უფლება ეკუთვნის, ამიტომ OpenMod.Core:commands.help არის ბირთვული framework-ის უფლება help-ის გასაშვებად. plugin-ის გვერდზე მისი უფლებები უნდა იყოს ჩამოთვლილი; თუ არ არის, მისი ბრძანებები ჩვეულებრივ <PluginId>:commands.<command> ნიმუშს მიჰყვება.

როლები openmod.roles.yaml-ში ცხოვრობს:

Servers/MyServer/OpenMod/openmod.roles.yaml
roles:- id: default  displayName: Default  priority: 0  isAutoAssigned: true  parents: []  permissions:  - OpenMod.Core:commands.help  data: {}- id: vip  displayName: VIP  priority: 10  isAutoAssigned: false  parents:  - default  permissions:  - Example.Kits:commands.kit  - Example.Kits:kits.vip  data: {}
ველირას აკეთებს
idროლის სახელი, რომელიც ყველგან სხვაგან გამოიყენება
isAutoAssignedყველა იღებს ამ როლს სიაში ჩაწერის გარეშე
parentsროლები, რომლებისგანაც ეს როლი მემკვიდრეობით იღებს
priorityწყვეტს, რომელი როლი იმარჯვებს, როცა ორი ერთმანეთს არ ეთანხმება
permissionsამ როლის მიერ მინიჭებული უფლებების სტრიქონები

ველების სახელებისთვის ავტორიტეტი ის სტრუქტურაა, რომელიც შენმა სერვერმა დააგენერირა; თუ განსხვავდება, მას მიჰყევი და არა ამ მაგალითს.

სამუშაოს უმეტესობას სამი ფუნქცია აკეთებს:

  • მემკვიდრეობა. vip default-ს მშობლად ასახელებს, ამიტომ VIP-ს აქვს ყველაფერი, რაც ჩვეულებრივ მოთამაშეს, პლუს საკუთარი უფლებები.
  • wildcard-ები. Example.Kits:kits.* plugin-ის მიერ განსაზღვრულ kit-ის ყველა უფლებას ანიჭებს.
  • უარყოფა. !-ით დაწყებული უფლება მას ცხადად კრძალავს, რაც როლს საშუალებას აძლევს, wildcard მემკვიდრეობით მიიღოს და შემდეგ მისგან ერთი ელემენტი მოაშოროს.

ცალკეული მოთამაშეები openmod.users.yaml-შია, მათი Steam ID-ით, როლებით, რომლებიც აქვთ, და ნებისმიერი პირადი უფლებით. მისი ხელით რედაქტირება გაჩერებული სერვერით შეგიძლია, მაგრამ მუშაობისას კონსოლის ბრძანებები უფრო უსაფრთხოა, რადგან ისინი ფაილს წერენ და ერთ ნაბიჯში გადატვირთავენ. OpenMod გთავაზობს permission და role ბრძანებებს უფლებებისა და როლების დასამატებლად და მოსაშორებლად; ზუსტი სინტაქსისთვის, რომელსაც შენი ვერსია ელის, გაუშვი help permission და help role.

პრინციპი იგივეა, რაც პანელის ანგარიშებისთვის: თითოეულ როლს მხოლოდ ის მიეცი, რაც სჭირდება. მოდერატორებს kick და ban სჭირდებათ და არა ნივთების გაჩენა. subuser-ები და მინიმალური პრივილეგია ზოგად არგუმენტს გადმოსცემს.

OpenMod-ის გაშვება Rocket-ის გვერდით#

ორ framework-ს თანამშრომლობა სამი გზით შეუძლია, რაც openmod.unturned.yaml-ში კონფიგურირდება.

Rocket-ის plugin-ების ჩატვირთვა. OpenMod-ს შეუძლია Rocket-ის plugin-ების ჰოსტინგი თავისი თავსებადობის ფენით, ასე რომ სერვერს პრინციპში ყველაფრის OpenMod-ით გაშვება შეეძლო. პრაქტიკაში სერვერების უმეტესობა Rocket-ის plugin-ებს Rocket-ის ქვეშ ტოვებს, რადგან იქ არის ისინი გატესტილი.

საერთო უფლებები. Rocket-ის ხიდს შეუძლია OpenMod-ს Rocket-ის Permissions.config.xml წააკითხოს, ან ორი სისტემა ცალ-ცალკე შეინარჩუნოს. თუ უკვე გაქვს კარგად აწყობილი Rocket-ის უფლებების ფაილი, OpenMod-ისთვის მისი გამოყენების ნების დართვა ჯგუფების ორი ნაკრების მოვლას გაგარიდებს. თუ ნულიდან იწყებ, OpenMod-ის YAML როლები უფრო ადვილი წასაკითხია.

საერთო ეკონომიკა. plugin-ებს, რომლებიც მოთამაშეებს ფულს ახდევინებენ ან უხდიან, თითო მოთამაშეზე ერთი ბალანსი სჭირდებათ და არა თითო framework-ზე. ხიდს შეუძლია ეკონომიკის გამოძახებები ერთ სისტემაზე გადაამისამართოს, ასე რომ მაღაზიის plugin ერთი framework-ის ქვეშ და სამუშაოების plugin მეორის ქვეშ ერთსა და იმავე ფულს ხედავენ.

პარამეტრების სახელები და ოფციები გამოშვებებს შორის იცვლებოდა, ამიტომ რამის შეცვლამდე შენს გენერირებულ openmod.unturned.yaml-ში კომენტარები წაიკითხე. ადრევე გადაწყვიტე ერთი რამ და ჩაიწერე: რომელი framework ფლობს უფლებებს შენს სერვერზე. ორი სისტემა, რომელთაგან თითოეული ფიქრობს, რომ მთავარია, ის გზაა, რომლითაც მოთამაშეს ბრძანება ერთში აქვს და მეორეში არა.

Rocket-ის ბრძანებაOpenMod-ის ბრძანებაარჩეულია კონფიგშიმოთამაშის ბრძანებაRocketModRocket-ის plugin-ებიOpenModპაკეტები და plugin-ებიRocket-ის ხიდიუფლებები, ეკონომიკაუფლებების ერთი წყარო
ერთი სერვერი, ორი framework

დამუშავებული მაგალითი: ერთი OpenMod plugin-ის დამატება Rocket-ის სერვერზე#

დავუშვათ, სერვერი ერთი წელია Rocket-ზე მუშაობს, მოწესრიგებული Permissions.config.xml-ით, რომელშიც default, vip და moderator ჯგუფებია, და მფლობელებს ერთი plugin უნდათ, რომელიც მხოლოდ OpenMod-ისთვის ქვეყნდება. ეს არის რიგი, რომელიც დაბნეულობის საღამოს აგარიდებს.

პირველ რიგში, გააკეთე მთელი instance საქაღალდის backup და ჩაკეტე, რომ იყოს ცნობილი სწორი წერტილი, რომელზეც დაბრუნდები. დააყენე OpenMod installer plugin-ით და აცადე პირველი გაშვების დასრულება, რამდენ ხანსაც არ უნდა მოითხოვოს. გაუშვი modules და დარწმუნდი, რომ ორივე framework სიაშია, სანამ სხვა რამეს შეეხები.

მეორე, გადაწყვიტე, ვინ ფლობს უფლებებს. დამკვიდრებული Rocket-ის კონფიგურაციით გონივრული არჩევანია, რომ openmod.unturned.yaml-ში ხიდმა OpenMod Rocket-ის უფლებების მონაცემებზე მიმართოს, ასე რომ არსებული ჯგუფები განაგრძობენ მუშაობას და ორ სიას არავინ უვლის. წაიკითხე ამ ფაილში კომენტარები, შეიტანე ცვლილება და გადატვირთე.

მესამე, დააყენე plugin openmod install-ით და ისევ გადატვირთე. კონსოლში plugin-ის ჩატვირთვის ხაზი და დამოკიდებულებების ნებისმიერი შეცდომა მოძებნე. გააჩერე სერვერი, გახსენი plugin-ის გენერირებული კონფიგურაცია, მოაწყვე და გაუშვი.

მეოთხე, მიანიჭე plugin-ის უფლება. როცა უფლებებს Rocket ფლობს, ეს ნიშნავს უფლების დამატებას სწორ ჯგუფში Permissions.config.xml-ში, იმ ფორმით, რომელსაც ხიდი ელის - მის კონფიგში კომენტარები წერს როგორ - და გადატვირთვას /p reload-ით. როცა OpenMod ფლობს, ეს ნიშნავს მის დამატებას როლში openmod.roles.yaml-ში. ეს ის ნაბიჯია, რომელიც ყველაზე ადვილად არასწორ ფაილში ჩაიწერება, რის გამოც მეორე ნაბიჯის გადაწყვეტილება მნიშვნელოვანია.

ბოლოს, გატესტე ჩვეულებრივი მოთამაშის ანგარიშით თითოეულ ჯგუფში. ადმინები იმდენ შემოწმებას გვერდს უვლიან, რომ მათით ტესტირება ძალიან ცოტას ამტკიცებს. თუ VIP-ს შეუძლია ბრძანების გამოყენება, ჩვეულებრივ მოთამაშეს კი არა, კონფიგურაცია სწორია.

ჩაიწერე, რა გააკეთე - რომელი framework ფლობს უფლებებს, რომელი plugin-ები სად ცხოვრობს - იქ, სადაც შენი სხვა ადმინები იპოვიან. ექვს თვეში ვიღაც plugin-ს დაამატებს და გაუკვირდება, რატომ არაფერს აკეთებს მისი ბრძანება, და ჩანაწერი მას ერთ საათს დაუზოგავს.

უსაფრთხოება და plugin-ების არჩევა#

OpenMod-ის plugin-ები კოდია, რომელიც შენს სერვერზე სრული წვდომით მუშაობს: მოთამაშეების მონაცემები, save და ყველაფერი, რასაც სერვერის პროცესი მისწვდება. NuGet-ის პაკეტირება მათ დაყენებას ადვილს ხდის, და ეს ადვილს ხდის ისეთი რამის დაყენებასაც, რაც არ გინახავს.

  • ამჯობინე plugin-ები საჯარო კოდით. OpenMod-ის ეკოსისტემა ძირითადად open source-ია; წაიკითხე, რას აკეთებს plugin, სანამ მას შენს სერვერს ანდობ.
  • ვერსიები მიაბი. openmod install <PackageId> <version> კონკრეტულ ვერსიას აყენებს, ასე რომ შემდგომი განახლება ქცევას შენი არჩევანის გარეშე ვერ შეცვლის.
  • მოაშორე ის, რასაც აღარ იყენებ. გამოუყენებელი plugin მაინც მომუშავე კოდია.
  • დაყენებამდე backup გააკეთე. plugin-ებს, რომლებიც მონაცემებს ინახავს, შეუძლიათ save-ში ან საკუთარ ფაილებში წერა, და გაუქმება არ არსებობს.

RE:NODE-ზე ნებადართული plugin-ების whitelist არ არსებობს; რასაც დააყენებ, ის მუშაობს, რაც შენს საკუთრებაში მყოფი სერვერისთვის სწორი ნაგულისხმევია და შერჩევითობის მიზეზი. მოდებიანი სერვერის სისუფთავე ფართო ჩვევებს ფარავს, ხოლო backup-ები, რომლებიც მართლა აღდგება ხსნის იმის შემოწმებას, რომ შენი backup-ები მუშაობს, სანამ რომელიმე დაგჭირდება.

პრობლემების მოგვარება#

OpenMod პირველ გაშვებას ვერასოდეს ასრულებს. ის პაკეტებს ტვირთავს. თუ პირდაპირ ჩავარდება, კონსოლი NuGet-ის შეცდომას აჩვენებს, ჩვეულებრივ ქსელის ჩავარდნას ან პაკეტს, რომელიც ამ ვერსიისთვის არ არსებობს.

`modules` OpenMod-ს არ ჩამოთვლის. მოდულის საქაღალდე მეტისმეტად ღრმადაა ჩადებული, ან სერვერის Modules დირექტორიის ნაცვლად instance საქაღალდეში გაიხსნა.

plugin დაყენდა, მაგრამ მისი ბრძანებები არაფერს აკეთებს. უფლებები. დაამატე plugin-ის უფლება როლში, გადატვირთე და გატესტე არა-ადმინად.

plugin დაკარგული დამოკიდებულების გამო ვერ იტვირთება. დააყენე შეცდომაში დასახელებული დამოკიდებულების პაკეტი, ან plugin-ის ვერსია, რომელიც შენი OpenMod-ის ვერსიისთვისაა აგებული.

Unturned-ის განახლების შემდეგ ყველაფერი გატყდა. OpenMod-ის მოდულს თამაშის ახალი ვერსიისთვის აგებული გამოშვება სჭირდება. შეამოწმე პროექტის გამოშვებები; აღადგინე backup, თუ მანამდე სერვერი ჩართული გჭირდება.

უფლებები Rocket-ში მუშაობს, OpenMod-ში კი არა, ან პირიქით. openmod.unturned.yaml-ში ხიდი წყვეტს, რომელი სისტემა გამოიყენება. აირჩიე ერთი და მეორე მას მიაყოლე.

ორი plugin მოთამაშეებს სხვადასხვა ბალანსიდან ახდევინებს. ეკონომიკა საერთო არ არის. ხიდი ისე მოაწყვე, რომ ორივე framework ერთ ეკონომიკას იყენებდეს.

FAQ#

OpenMod გამოვიყენო თუ RocketMod?

დაიწყე RocketMod-ით, რომელიც სერვერს მოყვება და plugin-ების უფრო დიდი კატალოგი აქვს. დაამატე OpenMod, როცა სასურველი plugin მხოლოდ მისთვის ქვეყნდება, ან როცა საკუთარ plugin-ებს წერ და მისი თანამედროვე დიზაინი გინდა.

შეუძლიათ OpenMod-სა და RocketMod-ს ერთდროულად მუშაობა?

დიახ. OpenMod Rocket-ის გვერდით სამუშაოდაა დაპროექტებული, და მისი Unturned-ის მოდული უფლებებისა და ეკონომიკის ხიდს შეიცავს. სერვერების უმეტესობა, რომლებიც OpenMod-ს იყენებენ, Rocket-საც უშვებს.

სად ინახება OpenMod-ის უფლებები?

OpenMod/openmod.roles.yaml-ში როლებისთვის და OpenMod/openmod.users.yaml-ში ცალკეული მოთამაშეებისთვის, სერვერის instance საქაღალდის შიგნით. ამ საქაღალდის backup save-თან ერთად გააკეთე.

როგორ დავაყენო OpenMod-ის plugin?

გაუშვი openmod install <PackageId> სერვერის კონსოლში და გადატვირთე. DLL-ებად გავრცელებული plugin-ები ამის ნაცვლად OpenMod/plugins/-ში მიდის. შემდეგ plugin-ის უფლებები როლს მიანიჭე.

სჭირდება OpenMod-ს სერვერიდან ინტერნეტზე წვდომა?

დიახ, დაყენებისთვის. პაკეტები და OpenMod-ის საკუთარი კომპონენტები NuGet-იდან მოდის. დაყენების შემდეგ სერვერი ჩამოტვირთული პაკეტებით მუშაობს.

მოთამაშეებს OpenMod-ის plugin-ებისთვის რამის დაყენება სჭირდებათ?

არა. plugin-ები მხოლოდ სერვერზე მუშაობს. მოთამაშეებს არაფერი სჭირდებათ workshop-ის კონტენტის გარდა, რომელსაც სერვერი იყენებს და რომელიც ცალკე იმართება - იხილე Unturned-ის workshop რუკები და მოდები.


კომენტარები

სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.

0/2000