unioslo / mreg-cli Goto Github PK
View Code? Open in Web Editor NEWCommand Line Interface for Mreg
License: GNU General Public License v3.0
Command Line Interface for Mreg
License: GNU General Public License v3.0
Etter unioslo/mreg#77 så må man ha med epostadresse for å opprette en zone.
Følgelig send med det.
mreg> host ptr_set 10.0.0.2 foo
OK: host ptr_set: Added PTR record 10.0.0.2 to foo.example.org
mreg> subnet info 10.0.0.0
Subnet: 10.0.0.0/26
Netmask: 255.255.255.192
[..]
IP-range: 10.0.0.0 - 10.0.0.63
Reserved host addresses: 3
10.0.0.0 (net)
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.63 (broadcast)
Used addresses: 2
Unused addresses: 57 (excluding reserved adr.)
F.eks ved subnet create 11.0.0.0
, så må man eksplisitt skrive "y" eller "n" for om det skal være fryst. La heller "n" være standard og la brukeren kunne bare trykke på enter for å unngå å måtte velge.
Helt sikkert andre tilfeller av en generisk yes_no_input kan brukes.
mreg> host add foo 129.240.0.10 [email protected]
OK: host add: created host foo.uio.no
mreg> host add foo2 129.240.0.10 [email protected]
ERROR: host add: POST "http://127.0.0.1:8000/hosts/": 409: Conflict
{
"ERROR": "IP address already exists"
}
Dagens oppførsel:
jbofh> host add foobar10 193.157.234.70 other other other
name ip
foobar10 193.157.234.70
bofh> host add foobar11 193.157.234.70 other other other n
Error: IP already in use or reserved, must force (y)
jbofh> host add foobar11 193.157.234.70 other other other y
name ip
foobar11 193.157.234.70
jbofh> host info 193.157.234.70
A-records IP MAC
foobar10.uio.no. 193.157.234.70 <not set>
foobar11.uio.no. 193.157.234.70 <not set>
Rev-map override:
193.157.234.70 foobar10.uio.no.
jbofh> host remove foobar11.uio.no.
OK, DNS-owner foobar11.uio.no. completely removed
jbofh> host info 193.157.234.70
A-records IP MAC
foobar10.uio.no. 193.157.234.70 <not set>
Rev-map override:
193.157.234.70 using default PTR from A-record
Blir løst av #61
Nå kan alle lage det, det er ikke helt heldig.
Create the following commands:
host mx_add host priority mailexchange
-- add a MX to a hosthost mx_show host
-- show MX for hosthost mx_remove host priority mailexhange
-- remove a MX from a hostSee unioslo/mreg#86
cname_add
does the opposite of what is should. It creates a new host with the alias name and adds the name of the host as the cname name.
mreg=# SELECT * FROM host;
id | name | contact | ttl | loc | comment | hinfo | zone
----+-----------------------+-------------------+-----+-----+---------+-------+------
1 | ns1.example.org | [email protected] | | | | | 2
2 | foo.example.com | [email protected] | | | | | 3
3 | ns.blåbær.example.org | [email protected] | | | | | 2
4 | ns.example.org | [email protected] | | | | | 3
5 | ns.example.net | [email protected] | | | | |
(5 rows)
mreg=# SELECT * FROM cname;
id | cname | ttl | host
----+-----------------+---+------
1 | ns1.example.org | | 3
2 | ns1.example.org | | 4
3 | ns1.example.org | | 5
Nå klarer vi ikke å slette selv nyopprettede soner:
mreg> zone create usit.no [email protected] ns1.uio.no
OK: zone create: created zone usit.no
mreg> zone delete usit.no
WARNING: zone delete: Zone has registered subzones, must force
Problemet er at den sjekker om det finnes noen soner som slutter på det samme som sonen oppgitt. Den får alltids treff på seg selv, om da syter den over treff på undersoner.
Client part of unioslo/mreg#274.
I util.py:get_vlans_from_file
så lager den en en dict, men den lager den som dict[vlan] = range
og ikke motsatt, som subnetimporten antar. Reverser oppbygningen av dicten og få med på kjøpet at flere nettverk kan ha samme vlan.
As the API will be more stringent as of sit-gd/mreg#178, format the MAC address properly beforce sending it to the API.
Se på python-prompt-toolkit og se om det er fornuftig for oss å bruke den i CLI'et
No need to be create and require extra server side code for empty values.
After unioslo/mreg#180 TXTs are unique, and thus do not attempt to add a TXT to a host when an identical one is already set.
Ex: host add
parameteren ttl er optional, men dersom det er spesifisert, må verdien være ttl >= 300.
Dette bør sjekkes client-side i stedet for API-side.
Per nå er kun "quit" godkjent ord for å avslutte klienten. "exit" og ctrl+d burde også fungere.
Innen versjon 1, altså prod, skal kun dem som er definert i gruppen "mreg-superbrukere" ha tilgang til force på kommandoer.
Først må API-et klargjøres i unioslo/mreg#101
Ved "dhcp assoc", så må det legges på force hvis mac-adressen er i bruk på et annet nett.
Etter at mreg fikk mulighet til å liste reserverte adresser i unioslo/mreg#129, så ta dette i bruk i cli-et.
Nå blir det en traceback fra python om man skriver "unix" og ikke "1" som hinfo. Lag bedre feilmelding.
Etter unioslo/mreg#89, så kan slipper man å gjøre så mye logikk på klientsiden. Ta dette i bruk i mreg-cli.
Nå gjentas forrige kommando når man trykker enter, det er ikke slik bofh gjør det og mange vil kanskje kun forvente at det skjer ingenting.
La det derfor skje ingenting.
Diverse a_add
, aaaa_add
osv gjør veldig mye av det samme, men gjenbruker veldig lite felles logikk. Veldig mye unødvendig duplisering som kan enkelt fikses.
Fra Anders per epost:
Forresten veldig fint om den interaktive hjelpeteksten :
mreg> host cname_add
Enter name> www.vg.no.
Enter alias> tulleavis.uio.no.
WARNING: host cname_add: host not found: www.vg.no.uio.noKan endres fra "Enter name" til "Enter existing name", og fra "Enter
alias" til "Enter new alias".
Etter unioslo/mreg#96, ta den i bruk for å få info om en IP. Typisk vil dette gjøre
util.py:ip_in_mreg_net() mye raskere og bedre.
Nå gjør mreg-cli en hosts = list(subnet.hosts())
og det fungerer fint i ipv4-verden, men drar seg virkelig til i ipv6-verdenen. En standard /64-prefix har 18446744073709551616 adresser. Så blir en stor liste for å hente ut de første reserverte adressene...
Also should check if we can just skip the configfile and do some defaults in the code instead.
Tilsvarende kode som #25 er det også i host:opt_add, så fiks det en gang for alle med en hjelpemetode som kan benyttes.
For å klargjøre for unioslo/mreg#61, så fjern alle antagelser om "uio.no" hvis man ikke har oppgitt et fqdn. La eventuelt domene som skal gjøre om fra host til fqdn være definert i cli.conf.
Massive API-endringer i unioslo/mreg#161. Følgelig må klienten også følge med.
Sjekke om det nye subnettet allerede eksisterer eller om det overlapper med et annet subnet.
In unioslo/mreg#193 the field "orderv" was renamed to "order". Follow up the change in the client.
Nå bor subnet-import i mreg-cli, men det må ut og til et eget skript.
Når man kjører en kommando, kan den spørre deg om flere parametre, som du da må skrive inn på hver sin linje.
Hvis man trykker pil opp for å gå tilbake, bør man slippe å bla gjennom disse parameterverdiene, men i stedet gå rett til forrige kommando.
Nå må man vite om og lage hinfopresets via API-et, det holder ikke.
Trenger å lage:
host hinfopreset_list
-- som lister alle hinfopresets
host hinfopreset_create
-- opprette ny
host hinfopreset_delete
-- fjerne
Fra Odberg:
dersom man oppgir en adresse som er på et subnett som ikke er
kontrollert av mreg, så skal det kreve force :mreg> host a_add kantarell 129.241.10.10 y
OK: host a_add: added ip 129.241.10.10 to kantarell.uio.noDen over burde ha krevd force, på samme måte som :
mreg> host add kantarell2 129.241.10.10 [email protected]
WARNING: host add: 129.241.10.10 isn't in a subnet controlled by MREG, must force
Fra Odberg:
mreg> host hinfo_set loff.uio.no
Enter hinfo> ?
Enter hinfo>Her ønsker jeg en liste over lovlige hinfo verdier.
For A, AAAA og CNAME, ikke la navnet inneholde en "_".
Kan overkjøres av force.
Kunne angre og gjenopprette en removed host, f.eks.
Ved sletting av subnet så prøver man å få ut info ved å gå til "subnets/1.2.3.4/24", det fungerer ikke uten å bruke "urllib.parse.quote", ellers blir "1.2.3.4/24" tolket som en sti og ikke som et argument.
Eksempel fra Odberg:
mreg> subnet remove 193.157.109.0/24
WARNING: subnet remove: Must force (y)
mreg> subnet remove 193.157.109.0/24 y
ERROR: subnet remove: DELETE "http://127.0.0.1:8000/subnets/193.157.109.0/24": 500: Internal Server Error
Typisk i dag bruker man:
>> host info (ns1 ns2)
for å gjøre host info ns1
og host info ns2
. Dette støtter ikke mreg-cli.
Tilsvarende kan man gjøre:
>> host add (foo bar) 10.0.0.0/
for å legge til to hoster samtidig. Følgelig må man skjønne når noe er en liste og når det er i eksempelet over henholdvis andre og tredje argument.
Need to update any references to "service", to the new "name".
Må lage en felles metode for å lage urler. Nå er det ca 100 tilfeller av følgende kode:
url = "http://{}:{}/subnets/".format
conf["server_ip"],
conf["server_port"],
)
history.record_get(url)
nets = get(url).json()
Dette både hardkoder bruk av HTTP og er virkelig unødvendig jobb gang man skal kalle på APIet.
host info example.org
bør gjøre oppslag mot "example.org" og ikke "example.org.domene.i.conf".
mreg-cli mangler mulighet til å liste ut zoner og info om zoner.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.