Announcing bsdconfig(8) preliminary

Devin Teske devin.teske at fisglobal.com
Mon Feb 13 07:10:41 UTC 2012


On Feb 11, 2012, at 7:07 PM, Devin Teske wrote:

> 
> On Feb 11, 2012, at 5:23 PM, Devin Teske wrote:
> 
>> 
>> On Feb 11, 2012, at 2:06 PM, Devin Teske wrote:
>> 
>>> 
>>> On Feb 10, 2012, at 7:21 PM, Ron McDowell wrote:
>>> 
>>>> On 2/10/12 8:35 PM, Devin Teske wrote:
>>>>> On Feb 10, 2012, at 5:35 PM, Ron McDowell wrote:
>>>>> 
>>>>>> On 2/10/12 7:20 PM, Devin Teske wrote:
>>>>>>>> -----Original Message-----
>>>>>>>> From: owner-freebsd-sysinstall at freebsd.org [mailto:owner-freebsd-
>>>>>>>> sysinstall at freebsd.org] On Behalf Of Ron McDowell
>>>>>>>> Sent: Thursday, February 09, 2012 11:37 AM
>>>>>>>> To: freebsd-sysinstall at freebsd.org
>>>>>>>> Subject: Announcing bsdconfig(8) preliminary
>>>>>>>> 
>>>>>>>> http://fuzzwad.org/bsdconfig/ is a long way from finished, but there is
>>>>>>>> enough of a framework available now, that I'm wanting some feedback on.
>>>>>>>> Tarballs are out there and I'll guarantee you'll want to look at the
>>>>>>>> latest, and not the earlier examples.  The manpage in the tarball is a
>>>>>>>> good place to start.
>>>>>>>> 
>>>>>>>> Feel free to talk about it here and ask any questions you want.  The
>>>>>>>> direction I go with it will depend [I hope!] on where everyone wants it
>>>>>>>> to go.  Thanks in advance.
>>>>>>>> 
>>>>>>> Hi Ron,
>>>>>>> 
>>>>>>> Thank you very much for working on this with everyone.
>>>>>>> 
>>>>>>> I notice that you've centralized the use of "notimplemented" to
>>>>>>> /usr/libexec/bsdconfig/notimplemented which makes the per-module files
>>>>>>> /usr/libexec/bsdconfig/*.*/notimplemented obsolete.
>>>>>>> 
>>>>>>> I thinking I should clean things up after installation by executing:
>>>>>>> 
>>>>>>> 	cd /usr/libexec/bsdconfig
>>>>>>> 	sudo rm -f *.*/notimplemented
>>>>>> Absolutely, thanks for pointing that out.  I just cleaned it up on my copy.
>>>>>> 
>>>>>>> Again, thanks for working on this, ... would you mind if I took it and worked on
>>>>>>> it this weekend and passed it back to you for review?
>>>>>> Go for it!
>>>>>> 
>>>>> How do you feel about implementing "090.time-zone" with my ports addition, sysutils/tzdialog?
>>>> 
>>>> tzsetup(8) is already installed in base...I haven't looked at tzdialog, does it do more than tzsetup? If so, then tzdialog needs to be included here like we've done with host-setup in 120.networking.
>>>> 
>>>>> Aside, I have a question about the INDEX file...
>>>>> 
>>>>> Does the exit status of the program-to-be-executed matter in any way to bsdconfig?
>>>> 
>>>> Not yet, but it could and probably should...if nothing else, we should at least pass the exit code back up the line.
>>>> 
>>>>> Reason I ask is because tzdialog has a "-e" flag which may be useful if-desired, causing the exit status to be success if-and-only-if both a zonefile is selected and it was installed without error.
>>>> 
>>>> -- 
>>>> Ron McDowell
>>>> San Antonio TX
>>> 
>>> I've put a significant amount of work into this over the last 24 hours and would like to share my contributions.
>>> 
>>> http://druidbsd.sourceforge.net/download/bsdconfig/
>>> 
>>> http://druidbsd.sourceforge.net/download/bsdconfig/bsdconfig.120211.txz
>>> 
>>> Please try:
>>> 
>>> bsdconfig networking
>>> bsdconfig timezone
>>> bsdconfig networking -h
>>> bsdconfig timezone -h
>>> bsdconfig networking -X
>>> bsdconfig timezone -X
>>> 
>> 
>> Here's a little trick for testing the X11 interfaces from a Mac or PC (running Windows) using X11 Forwarding over SSH to a FreeBSD 9 box as a non-root user with sudo(8) access.
>> 
> 
> [snip]
> 
>> 
>> Step 3: Grant "root" the ability to use your X11 session
>> 
>> The default settings in FreeBSD 9 don't allow you to do things like:
>> 
>> 	sudo xdpyinfo
>> 
>> The failure becomes:
>> 
>> 	X11 connection rejected because of wrong authentication.
>> 	xdpyinfo:  unable to open display "localhost:10.0".
>>  
>> The solution is to execute:
>> 
>> 	xauth -f ~/.Xauthority extract - ${HOSTNAME:-localhost}{/unix,}:${DISPLAY#*:} | sudo -u root xauth -ivf ~root/.Xauthority merge -
>> 
> 

I've put a lot more work into bsdconfig over the past 24 hours and hand it back off for review.

http://druidbsd.sf.net/download/bsdconfig/

http://druidbsd.sf.net/download/bsdconfig/bsdconfig.120212.txz

Changes include:

both "networking" and "timezone" have had their common-bits removed and consequently some new includes are now available (detailed below):

/usr/libexec/bsdconfig/incl/dialog.incl
	Provides the following functions for dealing with dialogs:
		- f_dialog_infobox_size()
		- f_dialog_buttonbox_size()
		- f_dialog_inputbox_size()
		- f_dialog_menu_size()
		- f_dialog_clear()
		- f_dialog_info()
		- f_xdialog_info()
		- f_dialog_msgbox()
		- f_dialog_yesno()
		- f_dialog_inputstr()
		- f_dialog_menutag()
		- f_dialog_menutag2item()
		- f_dialog_menutag2index()

/usr/libexec/bsdconfig/incl/mustberoot.incl
	Upon inclusion will make sure that you are root.
	If you are not root, prompts for sudo(8) credentials.
	Script re-executes itself automatically via sudo(8).
	Preserves command-line arguments.

/usr/libexec/bsdconfig/incl/strings.incl
	Provides the following functions for string manipulation and et cetera:
		- f_substr()
		- f_longest_line_length()
		- f_number_of_lines()

/usr/libexec/bsdconfig/incl/sysrc.incl
	Provides the following functions for managing rc.conf(5) settings:
		- f_clean_env()
		- f_sysrc_get()
		- f_sysrc_find()
		- f_sysrc_set()
		- f_sysrc_delete()

NOTE: The sysrc.incl module should make authoring the "startup" module pretty easy (compared to without it). I'm looking forward to writing that module before next weekend.

In addition, bsdconfig itself now uses the "mustberoot.incl" include, meaning that any of the following commands can now work as non-root (so long as sudo(8) is installed and your account has access to use it; HINT: pkg_add -r sudo && pw usermod myusername -G wheel).

	bsdconfig
	bsdconfig networking
	/usr/libexec/bsdconfig/120.networking/networking
	bsdconfig networking -X
	/usr/libexec/bsdconfig/120.networking/networking -X
	bsdconfig timezone
	/usr/libexec/bsdconfig/090.time-zone/timezone
	bsdconfig timezone -X
	/usr/libexec/bsdconfig/090.time-zone/timezone -X

eliminating the need to either (a) use sudo(8) or (b) use su(1) to become root first. All the above commands will work as non-root user if sudo(8) is installed and the current user is granted access.

NOTE: The "-X" options now automatically work via SSH as I've incorporated the xauth(1) session management into the "mustberoot.incl" include (auto-enables if-and-only-if both $SSH_CONNECTION and $DISPLAY are set).

Other changes include
- expanding the f_die() function in the "common.incl" include to take a printf(1) syntax.
- optimized bsdconfig INDEX scanning for usage statement (changed a "cat | grep | sed | sed" into a single "awk")
- cleaned up "networking" further (formerly "host-setup" from ports tree in sysutils), removing "reset_shell" and ilk

That's all for now. Zzzzz...
-- 
Devin

P.S. Breakdown of activity over this weekend:

dteske at push900.vicor.com ~ $ diff -rupN bsdconfig.1202{09,11} | wc -l
    9946
dteske at push900.vicor.com ~ $ diff -rupN bsdconfig.1202{11,12} | wc -l
    4840

_____________
The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.


More information about the freebsd-sysinstall mailing list