blogger fail
So this has all been exported to wordpress, and life continues there. Back to 100% self-hosted blogging.
You need to go to http://host/dimdim/, the trailing slash is essential.
404 Not Found
The path '/' was not found.
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/cherrypy/_cprequest.py", line 551, in respond
cherrypy.response.body = self.handler()
File "/usr/lib/python2.3/site-packages/cherrypy/_cperror.py", line 198, in __call__
raise self
NotFound: (404, "The path '/' was not found.")
## NOTE : In this Open Source Edition only 1 Meeting at a time is allowed. If you need a Dimdim Meeting Server with higher capabilities then pleaseHowever my dimdim.properties lacks any such note. Perhaps in the source code rather than the slightly older centos installer it says this. This value is set to 50 by default in my config files, I recall seeing some mention somewhere that this limit was in a jar file.
## contact sales@dimdim.com.
Open Source SF edition of dimdim is a personal edition of the meeting server and is meant to cater to single meeting. We have currently placed the restrction to upto 5 participants. For larger meetings, the resources required increase significantly and require dedicated servers.Someone replies with the same sort of arguments that seem obvious to any OSS fan, and links to a webarchive copy of dimdim's website where they say:
Please use the hosted dimdim edition - for hosting larger meetings. We also provide an enterprise server build for on-premise installations.
Dimdim makes extensive usage of open source components and products and hopes that someday Dimdim itself will be useful to others in the way others have been useful to it. Big thanks to the communities and individuals of all the open source projects used in Dimdim.I assume at some point the company had OSS fans, and management has pushed it away from OSS.
The Es00r cannot be plugged in - it may interfere with the Websensor data which could explain the reason you are seeing the same values. In addition, the 6 random digits should be appended to the back of the "em" command (ie. "em123456") on earlier models.I disconnected the es00r and power cycled the em01 and I'm getting different readings now over time. I'm still querying index.htm?em though, as the v4.2 manual says this is okay and it seems to work for me:
Compatibility with the earlier models of Websensor has been maintained. Any version of the Websensor will always return temperature, relative humidity and illumination data by sending: http://192.168.254.102/index.html?em
unzip *zipMake sure nothing is running on port 80 (netstat -lnp), stop it if it is.
chmod 755 *run
mkdir dimdim
./*run --tar -xvf -Cdimdim
# install lots of crap. who knows?
apt-get install sun-java5-jre openoffice.org libaio1
cd /usr/local ; tar -xvzf ~/dimdim/dimdimrepository/dimdim.tar.gz
# Capistrano recipe to build a vmware guest
# Bryan McLellan -- bryanm@widemile.com
require 'erb'
logger.info("Vmware guest creation script logs in as root")
set(:user, "root")
vmxtemplate = %q{
#!/usr/bin/vmware
config.version = "8"
virtualHW.version = "4"
scsi0.present = "TRUE"
scsi0.virtualDev = "<%=disktype %>"
scsi0:0.present = "TRUE"
scsi0:0.redo = ""
priority.grabbed = "normal"
priority.ungrabbed = "normal"
guestOS = "other26xlinux-64"
ide1:0.startConnected = "FALSE"
floppy0.startConnected = "FALSE"
displayName = "<%=fqdn %>"
scsi0:0.fileName = "<%=fqdn %>.vmdk"
memsize = "<%=memory %>"
Ethernet0.present = "TRUE"
Ethernet0.virtualDev = "e1000"
ethernet0.addressType = "generated"
ethernet0.generatedAddressOffset = "0"
Ethernet0.connectionType = "custom"
Ethernet0.vnet = "<%=eth0 %>"
Ethernet1.present = "TRUE"
Ethernet1.virtualDev = "e1000"
ethernet1.addressType = "generated"
ethernet1.generatedAddressOffset = "10"
Ethernet1.connectionType = "custom"
Ethernet1.vnet = "<%=eth1 %>"
tools.syncTime = "TRUE"
}
pxetemplate = %q{
DEFAULT etch_i386_install_auto
TIMEOUT 100
LABEL etch_i386_install_auto
kernel debian/etch/i386/linux
append vga=normal initrd=debian/etch/i386/initrd.gz preseed/url=http://debian.example.org/preseed/autoserver-etch.cfg debian-installer/locale=en_US console-keymaps-at/keymap=us hostname=<%=hostname %> domain=<%=domain %> interface=eth0 --
}
def lastdhcpip(ourmac)
curLeaseIp = nil
curLeaseMac = nil
lastip = nil
f = File.open("/var/lib/dhcp/dhcpd.leases")
f.each do |line|
case line
when /lease (.*) \{/
curLeaseIp = $1
when /hardware ethernet (.*);/
curLeaseMac = $1
if ourmac == curLeaseMac
lastip = curLeaseIp
end
end
end
f.close
return lastip
end
set(:disktype, "lsilogic")
set(:disksize, "3Gb")
set(:memory, "768")
#set(:hostname, fqdn.match(/^[0-9A-Za-z-]*/))
#puts("hostname: #{hostname}")
task :build, :roles => :host do
set(:host) do
Capistrano::CLI.ui.ask "vmware hostname: "
end unless exists?(:host)
role :host, host
set(:hostname) do
Capistrano::CLI.ui.ask "guest hostname (vm16-dev-ots04): "
end unless exists?(:hostname)
set(:network) do
Capistrano::CLI.ui.ask "guest network (prod/corp/test): "
end unless exists?(:network)
case network
when /prod/
set(:fqdn, "#{hostname}.prod.example.org")
set(:domain, "prod.example.org")
set(:eth0, "/dev/vmnet4")
set(:eth1, "/dev/vmnet11")
when /corp/
set(:fqdn, "#{hostname}.corp.example.org")
set(:domain, "corp.example.org")
set(:eth0, "/dev/vmnet0")
set(:eth1, "/dev/vmnet0")
when /test/
set(:fqdn, "#{hostname}.test.example.org")
set(:domain, "test.example.org")
set(:eth0, "/dev/vmnet2")
set(:eth1, "/dev/vmnet14")
end
puts("fqdn: #{fqdn}")
result = ERB.new(vmxtemplate).result(binding)
run("mkdir /srv/vmware/#{fqdn}")
logger.info("Building vmx configuration file")
put(result, "/srv/vmware/#{fqdn}/#{fqdn}.vmx", :mode => 0755)
logger.info("Creating virtual disk")
run("/usr/bin/vmware-vdiskmanager -c -a #{disktype} -s #{disksize} -t 2 /srv/vmware/#{fqdn}/#{fqdn}.vmdk")
# start and stop vm to generate uuid and MACs
logger.info("starting VM")
#run("/usr/bin/vmware-cmd -s unregister /srv/vmware/#{fqdn}/#{fqdn}.vmx")
run("/usr/bin/vmware-cmd -s register /srv/vmware/#{fqdn}/#{fqdn}.vmx")
run("/usr/bin/vmware-cmd /srv/vmware/#{fqdn}/#{fqdn}.vmx start")
sleep 1
run("/usr/bin/vmware-cmd /srv/vmware/#{fqdn}/#{fqdn}.vmx stop hard")
macaddr0 = nil
run("cat /srv/vmware/#{fqdn}/#{fqdn}.vmx") do |ch, stream, data|
case data
when /ethernet0.generatedAddress = "(.+)"/
macaddr0 = $1
end
end
macaddr0dash = macaddr0.gsub(/:/, "-");
pxeConfig = File.new("/srv/tftp/pxelinux.cfg/01-#{macaddr0dash}", "w", 0644)
result = ERB.new(pxetemplate).result(binding)
pxeConfig.puts(result)
pxeConfig.close
# Box gets a different ip sometimes on install than on first boot. annoying
run("/usr/bin/vmware-cmd /srv/vmware/#{fqdn}/#{fqdn}.vmx start")
logger.info("Sleeping 30 seconds for network startup")
sleep 30
ipaddr0 = lastdhcpip(macaddr0)
logger.info("host #{fqdn} is now building and we be available at #{ipaddr0}")
File.delete("/srv/tftp/pxelinux.cfg/01-#{macaddr0dash}")
end
#!/usr/bin/ruby -w
# getdhcpip.rb Bryan McLellan -- bryanm@widemile.com
# parse through dhcpd.leases in search of a mac to get it's current ip
# assume not malformed. remember that this is a log file and the most recent (bottom) is the most accurate
def lastdhcpip(ourmac)
curLeaseIp = nil
curLeaseMac = nil
lastip = nil
f = File.open("/var/lib/dhcp/dhcpd.leases")
f.each do |line|
case line
when /lease (.*) \{/
curLeaseIp = $1
when /hardware ethernet (.*);/
curLeaseMac = $1
if ourmac == curLeaseMac
lastip = curLeaseIp
end
end
end
f.close
return lastip
end
if ARGV[0]
puts lastdhcpip(ARGV[0])
else
puts "Requires MAC address as argument: getdhcpip.rb 00:00:00:00:00:00"
end
#!/bin/sh
### BEGIN INIT INFO
# Provides: winbind
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start Winbind daemon
### END INIT INFO
# vmware-guestd --cmd 'vmx.set_option time.synchronize.tools.startup 0 1'
Unknown option name
#define TOOLSOPTION_SYNCTIME "synctime"Trying combinations of the last two did nothing, but I did have vmx.set_option as a search term though and eventually found this post that just uses:
#define TOOLSOPTION_COPYPASTE "copypaste"
#define TOOLSOPTION_AUTOHIDE "autohide"
#define TOOLSOPTION_BROADCASTIP "broadcastIP"
#define TOOLSOPTION_ENABLEDND "enableDnD"
#define TOOLSOPTION_SYNCTIME_PERIOD "synctime.period"
#define TOOLSOPTION_SYNCTIME_ENABLE "time.synchronize.tools.enable"
#define TOOLSOPTION_SYNCTIME_STARTUP "time.synchronize.tools.startup"
vmware-guestd --cmd 'vmx.set_option synctime 0 1'Nothing appeared on the screen when I ran this on a guest, but I did notice that the vmx file for the guest on the host automatically changed from:
tools.syncTime = "FALSE"to
tools.syncTime = "TRUE"I thought I was going to have to write a sed script and have puppet change all the vmx files and do a reboot of all the guests. Much happier now.
syntax on # enable coloring for source and scriptsWhen you open a dos text file on a unix box, sometimes it's full of ^M characters. This is because of the CR/LF or CR difference. Sometimes it's just visually annoying and distracting, sometimes a daemon crashs and burns because of them. I used to use :set filetype with unix/dos or something to convert files. These days I just open the file in vi/vim and do
set tabstop=2 # make tabs two spaces instead of five or whatever
set expandtab # uses spaces instead of tabs
set background=dark # make that dark blue text light blue because I use black backgrounds
:% s/^M$//You need to enter the ^M by typing CTRL+V then CTRL+M.
guest$ /usr/sbin/vmware-guestd --cmd 'info-get guestinfo.ip'This is really awesomely funny:
guest$ /usr/sbin/vmware-guestd --cmd 'info-set guestinfo.hostname'
Two and exactly two arguments expected
guest$ /usr/sbin/vmware-guestd --cmd info-set guestinfo.hostname
Too many mandatory argument(s) on the command line. The maximum is 1.
[04:00pm|btm> HA HA HA HA HAThis does work:
[04:02pm|jet_li> btm: welcome to my world
[04:02pm|jet_li> btm: here's a hint. typing harder won't help
[04:03pm|jet_li> btm: neither will profanity, or throwing things
guest$ /usr/sbin/vmware-guestd --cmd 'info-set guestinfo.hostname foo'Then on the server you can run 'vmware-cmd -l' to list your config files. Then run:
host$ vmware-cmd '/path/to/config.vmx' getguestinfo hostnameAnd you get:
getguestinfo(hostname) = fooNow go do something useful with it (I'm going to use it with iClassify and puppet.)
APT::FTPArchive::Release::Codename "etch";The use apt-ftparchive to create the release file:
APT::FTPArchive::Release::Origin "localhost.example.com";
APT::FTPArchive::Release::Components "main";
APT::FTPArchive::Release::Label "Local Debian Repository";
APT::FTPArchive::Release::Architectures "i386 amd64";
APT::FTPArchive::Release::Suite "stable";
apt-ftparchive release -c /path/to/apt-release.conf \Then sign it: (you do have a local key and all that jazz, right?)
/path/to/etch \
> /path/to/etch/Release
gpg -b /path/to/etch/ReleaseShould work fine for ubuntu too.
mv /path/to/etch/Release.sig /path/to/etch/Release.gpg
[09:40am|otavio> btm: you can do that putting a file on /target even before base-installer. (but after partitioning)This is too much work right now. My repo is local, so I'm going to go back to running allow_unauthenticated and trust my network. This explains why all the preseed examples on the internet while warning that allow_unauthenticated is insecure, don't have an example of the correct solution.
[09:40am|otavio> btm: /target/etc/apt/apt.conf.d
[09:40am|otavio> btm: it's ugly but works
[09:49am|otavio> btm: yes, there's ... this requires you to provide a signed repository and a key
[09:50am|otavio> btm: but in a way that it integrates
[09:50am|otavio> btm: i've done, long time ago, a patch to base-installer to allow it to, using preseed, install a package with base
[09:51am|otavio> btm: so it could be used for thta case where you _do have_ a package with the key
gpg --gen-key
cd [wherever your Release file is]
gpg -b Release
mv Release.sig Release.gpg
mkdir initrd ; cd initrd ; gzip -cd ../initrd.gz | cpio -idmv'gzip -cd' does decompress to stdout, and 'cpio -idmv' does "copyin" from the cpio archive, making directories, preserving timestamps and being verbose, respectively.
cd usr/share/keyrings
gpg --import < archive.gpg
gpg --export > archive.gpg
find . | cpio -ovH newc | gzip -9c > ../initrd.new.gzThe -9 on gzip is super-duper compression and you'll get a kernel panic if you try to boot off an initrd image made without '-H newc'.
intAnd debootstrap has a ----keyring option. I can't see a way to configure this though. There's a postinst file that has this hardcoded into a variable, I think this is where the option should be. For now I'm re-enabling allow_unauthenticated, as at the very least apt-setup should install my key, and thus allow the packages I want to install to be "authenticated" after in the reboot.
main(int argc, char *argv[])
{
char **args;
int i;
di_system_init("run-debootstrap");
debconf = debconfclient_new();
args = (char **)malloc(sizeof(char *) * (argc + 1));
args[0] = "/usr/sbin/debootstrap";
for (i = 1; i < argc; i++)
args[i] = argv[i];
args[argc] = NULL;
return exec_debootstrap(args);
}
tar -xvzf RT-Extension-CommandByMail-0.05.tar.gz
cd RT-Extension-CommandByMail-0.05
perl Makefile.PL
make
sudo make install
Since I'm an admin and not a web developer I started up wireshark, grabbed it's http request, then made the same request by hand and got the expected image file instead of the 301 error. I narrowed it down to having to use:Trying 216.87.188.20...
Connected to home.comcast.net.
Escape character is '^]'.
GET /~user/image.jpg HTTP/1.1
Host: home.comcast.net
HTTP/1.1 301 Moved Permanently
Date: Tue, 19 Feb 2008 19:25:07 GMT
Server: Apache
Set-Cookie: pwp_mig_status=0; Version=1; Max-Age=900; Path=/
Location: http://home.comcast.net/~user/image.jpg
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
100
Moved Permanently
The document has moved here.
I don't know what the workaround would be. Probably not using comcast because their rat bastards anyways. I'll note I had trouble testing by hand, probably some annoying security gear was dropping my requests, but I got the right combination eventually.GET /~user/image.jpg HTTP/1.1
Host: home.comcast.net
Cookie: pwp_mig_status=0
Labels: shmoocon
$g_login_method = 'LDAP';Note a few things. set ldap server not to a single servername by to the dns name for the domain, or UPN or whatever you call it. You may notice this points to your domain controllers, allowing ghetto-redundancy. If all of your DC's are not GC, use "gc._msdcs.example.org" as you'll see that I'm using port 3268 (the global catalog) rather than 389 (ldap). This is because php5-ldap or libldap2 or even testlink is getting confused when it sees those stupid LDAP referrals you get when you query your basedn is your domain instead of an OU or CN=Users and will fail. Using the GC instead just works. Since this is Active Directory, unless you've hacked it to allow anonymous binding you will need a binddn and bindpw, which can be a regular user or you can go find the documentation on creating this more securely if it matters to you.
$g_ldap_server = 'ad.example.org';
$g_ldap_port = '3268';
$g_ldap_root_dn = 'DC=ad,DC=example,DC=org';
$g_ldap_organization = ''; # e.g. '(organizationname=*Traffic)'
$g_ldap_uid_field = 'sAMAccountName'; # Use 'sAMAccountName' for Active Directory
$g_ldap_bind_dn = 'CN=BindUser,CN=Users,DC=ad,DC=example,DC=org'; // Left empty if you LDAP server allows anonymous binding
$g_ldap_bind_passwd = 'bindpassword'; // Left empty if you LDAP server allows anonymous binding
LDAPMessage searchResDone(2) Unknown result(9) (Referral:You'll then need to create a user via the new user link on the web interface. Make sure username matches up with your sAMAccountName value, that is, your regular username.
ldap://ForestDnsZones.corp.widemile.com/DC=ForestDnsZones,DC=corp,DC=widemile,DC=com
ldap://DomainDnsZones.corp.widemile.com/DC=DomainDnsZones,DC=corp,DC=widemile,DC=com
update users set role_id=8 where id=2;Assuming that you're the first user you created (admin is id=1) (see the users table and the roles table for more information). Now go back and log into the web interface.
get-PublicFolderClientPermission -identity "\folder" | flRemember | fl is for "format-list" which makes the output readable. What's neat is you'd expect the pipe to take information that you'd see if you weren't piping the output, and put it in a different format. The damn option is even called FORMAT-list. Alas, sometimes fl gives you more information than you would have gotten otherwise, so I always use it.
add-publicfolderclientpermission -identity "\folder" -User userorgroup -accessrights ownerThere's a good list of accessrights here.
Public folders do not talk. Any conversations between public folders and a real person occurred solely in the mind of the writer. And according to her, that's the only voice she's been hearing lately.
And the tech specs for the 2748 (which I have):Link Aggregation with support for up to 8 aggregated links per switch and up to 8 member ports per aggregated link (IEEE 802.3ad)LACP support (IEEE 802.3ad)
When configuring the two ports for a channel group:Industry-standard link aggregation adhering to IEEE 802.3ad standardsSupports 6 link aggregation groups and up to 4 ports per group
configure terminalThe ports would come up but I'd see intermittent packet loss on pings.
interface range g7/1 - 2
channel-protocol lacp
channel-group 1 mode active
sw01#show etherchannel 1 detailI've highlighted the interesting parts. The ports were coming up, but LACP wasn't. I configured "LAG" on the 2748 by selecting the two corresponding ports on the "LAG Membership" page.
Group state = L2
Ports: 2 Maxports = 16
Port-channels: 1 Max Port-channels = 16
Protocol: LACP
Ports in the group:
-------------------
Port: Gi7/1
------------
Port state = Up Sngl-port-Bndl Mstr Not-in-Bndl
Channel group = 1 Mode = Passive Gcchange = -
Port-channel = null GC = - Pseudo port-channel = Po1
Port index = 0 Load = 0x00 Protocol = LACP
Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs.
A - Device is in active mode. P - Device is in passive mode.
Local information:
LACP port Admin Oper Port Port
Port Flags State Priority Key Key Number State
Gi7/1 SP indep 32768 0x1 0x1 0x701 0x7C
Age of the port in the current state: 00d:00h:05m:09s
Port: Gi7/2
------------
Port state = Up Sngl-port-Bndl Mstr Not-in-Bndl
Channel group = 1 Mode = Passive Gcchange = -
Port-channel = null GC = - Pseudo port-channel = Po1
Port index = 0 Load = 0x00 Protocol = LACP
Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs.
A - Device is in active mode. P - Device is in passive mode.
Local information:
LACP port Admin Oper Port Port
Port Flags State Priority Key Key Number State
Gi7/2 SP indep 32768 0x1 0x1 0x702 0x7C
Age of the port in the current state: 00d:00h:05m:09s
Port-channels in the group:
----------------------
Port-channel: Po1 (Primary Aggregator)
------------
Age of the Port-channel = 00d:00h:52m:26s
Logical slot/port = 14/1 Number of ports = 0
Port state = Port-channel Ag-Not-Inuse
Protocol = LACP
sw01#show etherchannel 1 detailSo 802.3ad == Etherchannel (Cisco) == LAG (Dell). No packet loss now, if you remembered that problem.
Group state = L2
Ports: 2 Maxports = 8
Port-channels: 1 Max Port-channels = 1
Protocol: -
Ports in the group:
-------------------
Port: Gi7/1
------------
Port state = Up Mstr In-Bndl
Channel group = 1 Mode = On/FEC Gcchange = -
Port-channel = Po1 GC = - Pseudo port-channel = Po1
Port index = 0 Load = 0x55 Protocol = -
Age of the port in the current state: 00d:00h:10m:40s
Port: Gi7/2
------------
Port state = Up Mstr In-Bndl
Channel group = 1 Mode = On/FEC Gcchange = -
Port-channel = Po1 GC = - Pseudo port-channel = Po1
Port index = 1 Load = 0xAA Protocol = -
Age of the port in the current state: 00d:00h:10m:40s
Port-channels in the group:
----------------------
Port-channel: Po1
------------
Age of the Port-channel = 00d:01h:04m:04s
Logical slot/port = 14/1 Number of ports = 2
GC = 0x00000000 HotStandBy port = null
Port state = Port-channel Ag-Inuse
Protocol = -
Ports in the Port-channel:
Index Load Port EC state No of bits
------+------+------+------------------+-----------
0 55 Gi7/1 On/FEC 4
1 AA Gi7/2 On/FEC 4
Time since last port bundled: 00d:00h:10m:40s Gi7/2
LACP allows a switch to negotiate an automatic bundle by sending LACP packets to the peer.As opposed to doing it by hand, which is plain old port aggregation. I wonder if in an older Cisco switch there's an option for pre-802.3ad etherchannel and 802.3ad compatible eitherchannel. It's interesting to note that in this switch the 'switchport trunk encapsulation isl' command doesn't work on some cards as they only support 802.1q vlan trunking.
System Firmware Version 1.0.0.33I guess that's a problem, yeah. It's cool that this release was a year ago and the problem hasn't been fixed. This is why we buy Cisco switches and not Dell switches people.
Known Restrictions and Limitations:
The login screen accepts any password with the default
username, admin.