Tuesday, November 18, 2008

Lists for Lists

It's almost there. I did decide to change my code and dump the XML Post that I processed keyword info from. Instead, I now process from a list named _Keywords. To make things even easier, I created a list definition that already has all of the fields setup, so you just create your Keyword list and populate it with keywords. I've got another bug or two to work out, and I'm going to add a keyword definition property of "Overwrite" (append will take priority, in case some idiot sets both), but it's coming along great. So well, in fact, that I deployed it to my main Sharepoint server.

My workflows are working quite well. I was going to try doing them in Visual Studio, but it seems way too complicated. I did find this:
Essential Workflow Tools for SPD

which answered one nagging problem I had with doing the Workflow in Sharepoint Designer--being able to generate an email from someone other than the system account. If you do Workflows in SPD, you need this.

Tuesday, November 11, 2008

I'm having one of those epiphany days

I can't remember the last time I was this excited about a technology. My keyword processing list is working very well. I've even come up with an enhancement to it that I will hopefully be able to do tomorrow--why bother storing the keyword definitions in a list item (and parse them as XML) when I could use...wait for it...Another list? I still don't know how to add a property to a list, so it'll mean hard coding a list name (probably _Keywords), but it'll give me more flexibility, as well as the ability to lock security down even tighter.

But that's not what has me so excited. I've got my Supportcenter lists working. Supportcenter is made up of two lists (both of them are Keyword Processing lists). One list is the main "Issues Log" list, and the other is a "Issues Detail" list. From a 10,000ft perspective, you log the main issue in the Issues Log, and then any detail (actions, emails, etc.) goes into the Issue Detail list. But the goal is to make this system email enabled, so the users only have to email their issues, rather than manage them on a web interface. That's where workflows come in.

Note: Workflows come in only after you install the infrastructure update and set a property as detailed in Microsoft KB 953289. Sharepoint SP1 broke the ability for workflows to automatically start from list items created via email.

I started thinking logically--have the emails come into the Issues Log list, and have that list determine if it's an open issue (meaning that the item should be moved to the Detail list) or if it's new. But that meant that anyone subscribed to get alerts to the Issues Log list would be notified for every message. So I had to stand on my head to see the answer.

Emails from clients will come into the Detail list. This list processes for keyword "CaseID", and if it exists, it fills the CaseID field. It then looks up the client and who is responsible for the Case from the Issues Log and notifies just that person and/or the client (it will not notify the person that created the item). The magic happens when an item gets created *without* a CaseID.

Then, the workflow takes the list item and moves it (actually, it copies it and then deletes it) to the Issues Log list. The Issues Log has it's own new item workflow. When and Item is created, it fills the CaseID field with the value of the list item ID (always unique). It then modifies the subject line of the item to append [CaseID:].

Another workflow exists for the Issues Log that runs when an item is modified; if, after modification, CaseID no longer equals the list item ID, it assumes that the entry is actually a followup detail for an existing case, and so it moves the item to the Details list (triggering the "new item" workflow in that list; thankfully Case ID is set now). If CaseID still equals the item ID, then it looks to see if an IT representative has taken responsibility for the item (the ResponsibleIT field). If so, it creates an entry in the Detail list (which, for those of you playing at home, will notify the client and/or the responsible IT person) saying that the Case has been assigned. It also changes the status of the Case in the issues log to "In Process".

I'll probably have a few more workflows in this mix, but that's the general overview of it all.

Sunday, November 09, 2008

Recycle OWSTimer too!

I've been back to working on my keyword processing sharepoint list (coming along quite well, BTW). The main goal of this list is to be able to take a list entry that was emailed in and automatically fill in column values for that item. Since sharepoint scans for inbound emails once a minute, though, to speed testing I put list items in using the web interface. Everything was working great, so I decided to start trying it with emails.

Now, a little background on the list--I don't know how (or if it's even possible) to add custom properties to my list. The only centralized place that I could figure out to store my keyword definitions is in a list entry with a specific subject. (If anyone knows a better way, please let me know.) Since I didn't want to be troubleshooting my CAML queries at the same time, I just put the keyword definitions for testing right into the code. Once I got the actual processing code working, I changed the code to start pulling from a list entry with a title of "KEYWORDXML".

Now, back to the story. I sent in an email, and it seemed to work. One of the options in the definition for each keyword is whether or not the keyword should be removed from the title. I had one removing, and one staying. I decided to try pulling both, because it it more difficult than it sounds. :) I emailed in a post, and only one keyword was removed. I posted on the web interface, and both were removed. I kept dorking with it, ultimately removing my "KEYWORDXML" post to see that, with the web interface, it didn't process any keywords in the title. If I emailed, it still processed them in the same way that it did when I started testing. What is going on?

It finally hit me. After every deploy, I would do an IISReset, or else the web interface wouldn't start using the new code. I looked at the sharepoint log, and it turns out that, while w3wp.exe was processing the stuff I did on the web interface, owstimer.exe was processing anything emailed in. Turns out I need to reset the Sharepoint Timer interface as well--the timer was still using the *original* code that I had published, with the keyword definitions embedded into the code.

Friday, November 07, 2008

Offering Remote Assistance, Part 3

I decided to go with the registry update. Yeah, it opens a security hole, but I can keep that from becoming an issue at the firewall level.

I've got three aspx pages all total. The first I mentioned already--the login script uses wget.exe to pass the appropriate information (user, workstation name, IP) to the webpage, and the page saves that to the database. I save a new record on each login, so I can compile historical information.

The second aspx page is a very minimal page. It has a dropdown list of users and a button to offer remote assistance to that user. Selecting a user and clicking the button generates a startup script when the page reloads; the script just opens the hcp page that takes an IP as a parameter. The built URL includes the IP looked up in the database for that user's most recent login.

The third aspx page is for IT use only; selecting a user provides a link to start remote assistance, a link to open the user's C$ drive, and a table of all logins in the past 7 days for that user. In the next revision, I plan to allow the end user to click on an item in that table, and update the links to connect to that workstation.

Tuesday, November 04, 2008

Offering Remote Assistance Part 2

After pouring through the stuff in the previous post, the best solutions seems to be a new file I totally scammed from one of the web pages (http://www.lansweeper.com/forum/yaf_postsm3186_Offer-Remote-Assisstants-for-Custom-Action.aspx). But before talking about that, let's talk about how Offer Remote Assistance actually works.

If you go into Start, Help and Support, you're actually running helpctr.exe. Helpctr.exe is actually a web browser. It's a special web browser, though...to put it bluntly, it is a web browser that has no security whatsoever. The "Offer Remote Assistance" page (accessible in "Help and Support" by going to "Use Tools to view...") is nothing more than an HTML page. You can access it directly using this URL:

hcp://cn=microsoft%20corporation,l=redmond,s=washington,c=us/Remote%20Assistance/Escalation/Unsolicited/unsolicitedrcui.htm

The page has a lot of scripts and an instance of the actual Remote Assistance ActiveX control. But you'll note that you don't get prompted to allow it to use the control--it just does.

Help and Support is actually just a library of HTML files. Some of them take parameters. Back when XP originally came out, someone figured out that you could put a link (like the one above) on a web page, get someone to click it, and do all sorts of nasty things--even with the files already built into Help and Support.

Microsoft's fix to this was to change the way the HCP protocol was registered. Clicking an HCP:// link just fires up helpctr.exe and passes it the URL with the -URL parameter of the program. Now, they've added a "-FromHCP" parameter to the program as well, and the setup in the registry passes this parameter. What this does is prevents helpctr.exe from processing anything in the querystring of the URL; instead, if the URL has a querystring, helpctr.exe opens and just displays an error. To open an hcp link with a querystring, you have to fire off helpctr.exe manually, using the following command (I'm just taking the url from above, obviously there's no query string on this one):

%windir%\PCHEALTH\HELPCTR\Binaries\HelpCtr.exe -url hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Escalation/Unsolicited/UnsolicitedRCui.htm

If you just click an hcp:// link, Windows actually fires off this command:

%windir%\PCHEALTH\HELPCTR\Binaries\HelpCtr.exe -FromHCP -url hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Escalation/Unsolicited/UnsolicitedRCui.htm

OK, now with all that talk, what's the problem? Obviously I found a great replacement htm page for Remote Assistance that I can pass a parameter to. The problem is that I want to just put a link within my web page that will fire up this htm file with a query string. But the -FromHCP parameter will make that error out. So now I have two choices:

1. Create an ActiveX control of my own that I can have users install that will fire up the full command line to helpctr.exe
2. Modify my user's registration for HCP to remove the -FromHCP parameter

Both are ugly. #1 is more difficult to support and roll out, and #2 is a security risk. I'm leaning towards #2, but it means that I need to modify our firewall to ensure that any page that contains an HCP link gets blocked.

Programatically offering Remote Assistance

I needed to shift gears a little bit today; I'm having more and more need of giving people outside of IT the ability to offer remote assistance to other users. Since the Offer Remote Assistance tool requires a workstation or IP, and I've got too many workstations to know by heart (I used to know all of them), I've got our login script writing out a text file for each user when they log in. When I need to connect to a user, I open their text file, get their IP, and connect to it.

Kinda complicated for your average user, though. So today I wrote a small ASP.NET application that writes out a database record when the user logs in. My goal is to then have another part of this application be an interface that a user can go to, select a remote user to connect to, and have the application do the rest of the work. The critical piece of this is being able to programatically start up remote assistance and feed it an IP address.

I looked into this back in May, but I didn't keep any notes. So the main point of this post is to store links that might be valuable, and possibly a solution if I come acrossed it. First, the best Google string seems to be "unsolicited remote assistance pass parameter". Some of the links that come back that look useful are:

http://blog.netnerds.net/2006/12/ra-pass-workstation-and-username-parameters-to-offer-remote-assistance/
http://msdn.microsoft.com/en-us/library/ms811079.aspx
http://www.joatit.com/wordpress/?p=53

There is probably other good information, but now, if I wind up getting sent off in another direction, I can come back here and start again.

Monday, November 03, 2008

Creating a Sharepoint List, Try 1

There seems to be a real lack of information on how to create a new sharepoint list in VB. Lots of examples in C#, but nothing in VB. And even for those of us that speak both languages and can usually translate back and forth, there seems to be a lack of useful "10,000 ft" information. I've been doing a lot of little test Sharepoint objects, and it seems like I'm constantly running into publish errors because my new item is still named "ListDefinition1" at some place that matters.

So here's how I do it. I'm going to update this post as I find glaring errors (as I'm sure I will).

Create a new Sharepoint List Definition project, and give it a decent name. Note that you do need the Visual Studio Sharepoint project templates for this (although, if you are pretty good at .NET, you can probably develop them from scratch...I'm not good at .NET, though).

Select your base list definition. I always add with event receiver (why develop a new object if it can't handle any events?), but I don't check the "Create an instance". I'm not sure what that one does, actually. I tend to develop off of the Announcements base class, since it's basic and handles inbound email.

At this point, it seems to still be named "ListDefinition1" in some places. Next I change all of these that I can find: the folder in the project, the schema.xml file, and the listdefinition.xml file. I don't know if I'm allowed to change the names of all of the files that are named pretty generically, but they don't have "ListDefinition1" in the name, so I don't worry about them. I'm also not sure about the Public Class definitions for the event receivers; it looks like I can change them, so I go ahead and change them.

There's another thing I ran into, I think only with webparts, though. The template includes references to MOSS DLLs. I'm not made of money, so I only have WSS. These references can be easily pulled; there's plenty of information out there on how to do this. Just google the error you get when you try to build.

That should be it. It's all those name changes that get you. But I'll update this if (when) I find errors to my methodology.

Monday, October 27, 2008

Sharepoint Lists--gotta keep remembering that this is object oriented...

I've been pounding my head against a wall on this Sharepoint List idea I mentioned a few posts ago. And then, tonight, while, um...on the comode...I had an idea.

All of this stuff is now object oriented. VB is OO, all of the stuff in Sharepoint is OO. I've been thinking in terms of flat development, though, trying to make a project that is generic while also having all of the features I want. Silly programmer.

So, new plan--the sublist stuff will come in the second generation object. First generation will focus solely on keyword processing. Ultimately, the entire goal of a keyword is to drop a value into a list item field. The XML layout for the keywords should contain the keyword name, the column that the value will go into, and a datatype (for validation). I may add one or two things to that list as I work, but that's pretty much it. Then gen 2 can handle processing to sublists based on field values, rather than having it worry about keyword processing as well.
ASP.net Application generating "Parser Error", and unable to find it's underlying object?

This is one of those things that is talked about heavily online--but I hadn't found anything to fix my specific problem. I had a working application that I was able to publish to my development box without any difficulty. I'm just starting to play with web applications, and I can't see to publish to my application server yet, so I took the final product and copied it to it's own folder under wwwroot on the app server.

Every time I went to the app, it said that it couldn't load it's base object. The application DLL was in the application's BIN folder, and I knew it worked. All of the posts I found referring to the error were essentially the equivalent of "Well, did you turn it on?" I was looking for something a little more intelligent.

It turns out that, if you don't use Publish, you have to create the application as well as the folders. Go into IIS Management, find your folder, right click it, and click Properties. Odds are, "Application Name" is set to Default Application, and it's grayed out. Click the Create button, and it will create a new application (named for the folder). This will cause IIS to look in that folder's BIN folder for the DLL, like it's supposed to.

Saturday, October 25, 2008

Tried to update our oldest SQL 2005 box to SP2 this morning, and the update of the database and analysis services failed. Nothing too obvious in the log. During the middle of the SP install, I got this error twice:

Installation of KB921896 Failed.

I'll spare everybody the hour or so of blog reading; here's what I ultimately found:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=378205&SiteID=1

This server was originally just a member server, but I upgraded it to a Domain Controller (long time ago, back when I had very limited server resources). The security groups that the post at microsoft.com refers to were deleted at DC Promotion. Removing the registry entries mentioned in the post worked great.

Saturday, October 04, 2008

Huh, they haven't deleted this thing yet. OK, so here's my big "what if" project right now. I'm starting to hit Sharepoint pretty heavily for work, and I want to do a big whiz-bang thing to show management so they realize the benefits. I also want to start tracking support calls better.

So, in a nutshell, here's the plan: Create a list on a sharepoint site that will receive all of our support emails and voicemails. Have this list use the ID number of the list entry as a case number, and have the list use keywords included in the posting to set various items (like responsible IT person, issue types, etc.).

Then, have another list that contains the work detail for each case. I'm thinking that I can put logic into the first list so that, if a posting comes in that has a case number keyword embedded in it, it can move the entry to the secondary list as a piece of detail for that case.

I'm playing around with event receivers for lists (I'm using the announcement list right now--seems simplest), but I'm missing one somewhat important piece. The primary list will need to have a reference to the secondary list in some way. I figured I'd just use Visual Studio to create a new list type based off of Announcement, but all I can do with that is add columns to the list. I haven't found yet if I can add properties to the list itself. So if anyone knows how to do that, let me know--otherwise my workaround will be to put one entry into the list (expire it, since I'm using the announcement list and it won't show up on most views if it's expired) that has keywords for the name of the secondary list, as well as any other "List wide" properties I need.

Thursday, November 08, 2007

Wish I had something totally enlightening to share. I've got so many implementation projects, though, that I'm basically just running around trying to get all of them done.

I am beginning to plan out budgets for 2009; with the construction industry being as down as it is, there's no way I'm spending much money next year. But in 2009 we're going to need some server upgrades, and we're also predicting that the industry will be doing better. So I'm thinking disk space.

I looked at a SAN back in 2005 when we originally purchased most of our servers. It was prohibitively expensive. I've heard that they're cheaper now. But just as important as price is storage space--I've got things demanding 300-500GB of space now. I just can't keep up, especially when trying to deal with internal storage. Some kind of SAN seems like the only sane option.

Friday, August 31, 2007


OK, it's been almost 3 years to the dot since I touched this thing. So, new plan--short posts!

Today's tech? Forget about computers, I'm all about drain line cameras made from stuff on the clearance table at Lowes...


Wednesday, September 01, 2004

Wow, it's been 6 months. I'm getting really bad at this. Well, I'm going to try to fix that, because I've done a TON in the past 6 months. I want to mention one thing today, but here's a list of stuff I'll try to crank out in the next few days:

Windows Print Queueing from Unix (allowing for true FIFO and archiving)
What ever happened with our phone system?
DID Based faxing
Active Directory and Group Policy actually do rock
How to make WAN printers work over dialup

I'm sure there' s more. But today it's just a plug for an app I've used for the past year, and love it more and more every day. It's called Servers Alive, from Woodstone Consulting (www.woodstone.nu/salive). At it's simplest level, it's an alerting program. If something goes down, it alerts you. But it's so much more.

For starters, it's either cheap or free, depending on how you're using it. If you only have up to 10 devices or services to check, it's free (of course, they'd like you to register, and I'm sure the support is better once you do). For up to 100 services or devices, it's $100--well worth it for us.

Servers Alive isn't just a basic Ping utility. While it can ping a device (and that's primarily how I use it), it can also check any number of services or other protocols. It can check IPX connectivity, it can see if your web server is running, etc. And even the Ping check is fully featured--it doesn't just tell you if the device is gone; you can configure it to tell you if it's running slow as well.

You configure each check that you want to do. Then, you configure alerts. What's great is that it doesn't just offer the option to tell you when it's down. Most of my servers I have set to alert me after two down "cycles" (more on that in a sec), and then again once it's back up. That way if there's a brief "hiccup" on a WAN line, I'm not getting paged about it. I also get "reminder" pages at certain intervals.

As for the cycles, you can configure that as well. By default, it has "day" and "night" settings for weekdays, Saturdays, and Sundays. Since we are a 6-6 operation on weekdays, and closed on weekends, I've set "day" to be 6am-6pm. On week "days", it checks every two minutes (so, if something goes down, I get paged no more than 4 minutes later). On nights and weekends, it checks every 15 minutes (and I might bump that out even further).

Back to alerts for a second. It supports SMTP email, dialing via a modem to a pager or cell phone, and a whole slew of other functions. All I use right now is SMTP email, but once I start talking about our WAN redundancy solution, I'll be using more features of it. But if I told you now I'd have to kill you... :)

Saturday, February 14, 2004

Now an aside. Our new phone system is in. PRI should be installed Monday. SBC has moved the date out a number of times, but the guy that's assisting in the phone system installation, who also works for the SBC reseller that ordered our PRI for us, says he's coming out to test it on Monday, and I'm confident in his confidence.

We've purchased a 3Com NBX system. Specifically the Superstack 3, with redundant hard drives and power supplies and 250+ hours of voicemail recording. I add the "+" because I've been told that the 250 hours was the figure with the original Superstack 3 with a 10GB hard drive. They put in whatever hard drive is most cost efficient--rumor is it's a 40GB now. And we get to use all of it. Of course, we've got 3 hours of voicemail on our old system, so having 1000 hours now isn't gonna matter that much. :)

The NBX can technically be called a Voice over IP (VoIP) system, but that's more of an added ability that it has. At it's core it's an ethernet based system. All of the phones are ethernet based. By default they work at layer 2, so they never even touch IP. But they definately can.

I fell in love with the NBX a few years ago when I saw it on an episode of Hometime. Of course, they had the money to install a (installed, at the time) $2000 phone system in a house. My wife doesn't quite understand why I would want one at my house. To me, the idea of making everything in a home or business ethernet based makes perfect sense. Make every jack an active ethernet jack. No more wondering "What is this one" or "How do I move this extension". Even a lot of VoIP systems are simply VoIP at their core, and still use "traditional" PBX style phones. I did some serious looking at phone systems (I wasn't going to make a $30,000 purchase for my company based just on an episode of Hometime), and found that my original feelings were accurate--I like the idea of a networked phone.

One thing that the 3com system differs from it's competitors in is in the idea of one large system as compared to multiple connected systems. Most VoIP systems are strongly centralized. You've got one massive server that runs most everything. Some systems, like the Shoreline, add some redundancy by separating out call management to seperate devices that can be spread throughout the network, while still being managed as one system. For most companies, this is probably ideal. For us it isn't. We don't have the resources to spend on the redundant high speed WAN connections that a traditional VoIP system would need.

The NBX, on the other hand, operates independently at each site where we install it. The systems can communicate with each other, allowing for simple site to site calls. But if the line goes down, everybody is still up and running happily. No phone calls are lost.

Enough about the system, though--onto why I brought it up. I've got a 3Com phone at home right now. Like I said, they can easily do IP--they just don't by default. I've got the phone running over the XP VPN server that I built. But one of the difficulties that I've faced since I started looking at phone systems is the fact that upper management will probably want a phone at home, but I won't want to maintain some sort of VPN router for their house. Originally I was also concerned about getting them static Internet IPs, but the XP server removes that need. Now if only I could remove the need for the VPN server (without punching holes in the firewall).

Each of them has a Windows XP machine at home already. It finally hit me this week--I don't need a separate router. So, here's the plan:

I'll configure the broadband firewall at each person's house to use a "unique" address range. I'll have to maintain records of this. I can't have them all using 192.168.1.x like they do now. So perhaps Manager 1 will use 10.0.1.x, Manager 2 will use 10.0.2.x, etc.

I then enable IP routing on their XP workstation at home, and give it a static address in that range.

I set up their networked phone with an IP address in that range as well. The phone, though, will use the address of the XP workstation as it's default gateway.

I configure the remote access settings of their user ID to route traffic for their specific 10.x.x.x network through their VPN connection. (I realized this morning that I'll have to do a blog entry on this)

Now, when their VPN connection comes up, the phone connects and is available for use. When they disconnect, the phone goes offline. All they really have to do is plug the phone into the switch on the broadband router, and everything should work.

I'm looking forward to trying this out this coming week. I'll keep everyone posted.
Well, it's 5:40am on Saturday. I've discovered that alcohol (in moderation) is the perfect sleep inducer for me--I sleep like a rock for a few hours, and wake up wide awake (which never happens usually). But when you go to bed at 9:30pm (hey, I was tipsy after dinner, and feeling really tired! :) ), that few hours puts you up at 2:30 in the morning.

So, why not blog?

Routing in XP. It's still pretty simple to turn on, although not as easy as it was in NT 4 (check "Enable Routing"). There's a registry update necessary. You can find it pretty much anywhere on the net, including here:

Stupid little note: Changing the registry is dangerous stuff. I've heard of people losing limbs. Sprouting a second head is a very real possibility. You've been warned--anything you do on your computer, to yourself, or to others, is none of my business nor my fault.

Open Regedit, and find the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

If it's not there already, create a new DWORD value named "IPEnableRouter". Set it's value to 1. Thankfully "1" is the same in decimal and in hex, so you don't have to worry about which one it's set to.

After that, reboot. That's all there is to it.

Just remember, though--routing is useless unless you've got two IP addresses to route between. They can be on the same card. Yes, there are occasions where that's actually needed--like in an IP range conversion. Been there, done that. The addresses can also be on different cards, or, better yet, one can be a VPN connection. Wow, I might have a use for that... :)

Tuesday, February 10, 2004

Drumroll, please...

You know that Windows XP megadevice I've been yammering about? First one is installed. Of course, it's still in "Testing", but I've tested it enough to realize I'm really, really going to like this thing.

First, a little background (yeah, I've talked about this before). I work for a medium sized business with a number of sites. We've got a few sites that connect via IPSec VPNs back to the main office. It seems to be becoming our primary WAN solution. It actually does work pretty well.

Also, one of my pet projects has been to get some kind of file/print server out to each branch. My clients aren't very good at saving stuff to the server, and who can blame them--saving a big spreadsheet over the WAN link is painful sometimes. Add to that the nightmare that is printer administration right now (everyone prints directly to the IP address of printers), and you can see some of the benefits of getting a server to each site.

But why put two separate devices (server and VPN router) at each site? Seems like a waste to me. I went to Snapgear, who makes a VPN router that I really like (I've mentioned it before). It's actually a device running Embedded Linux. Seems like a no brainer to me to put a hard drive onto one of these, and, with Samba, turn it into a VPN/File/Print Server. No dice--they don't seem to have any plans to do such a logical, much needed product.

So, what do I turn to? Why, that Compaq Prolinea 2266 that I started off my blog with back in August, of course! Here's what I've got:

Prolinea 2266 running Windows XP
Two NICs (had to buy some used 3com NICs--the Netgear that came in the machine didn't take to well to having a twin)
Various registry updates to turn on routing within XP
Some (still in beta) batch files that detect the internet connection, and initiate a VPN connection (using PPTP, rather than IPSec, so it's client driven)
More (also beta) batch files that will connect to a dialup failover if the main internet connection fails (and then restart the VPN)
A DHCP Relay agent, which will pass DHCP requests on the remote network to our main DHCP server, for central administration
Print queues (using the ultra cool hierarchical queuing method that I mentioned in a previous post)
File shares

In short, everything that I want (well, other than QoS support, which I'm still looking into) in one device. The hardware we already own, and the software comes to around $200 (including the XP license). About the same price I'm paying for VPN routers now.

As I have time, I'm going to post more details on how this thing works, going in order of my list above (starting with the routing registry updates). I'll even be providing batch file source code, free of charge. I'm such a guy. :)

Monday, February 02, 2004

OK, the moves are done (we moved two branches into new buildings this month, which is part of the reason I've not discovered anything). So time to start sharing my vast wealth of knowledge with the world again.

Kinda tiny tidbit for this first one (trust me, I've got big stuff coming in a day or two): Why was my freezer broken? We've got a frost free upright freezer. Almost since we got it, it's been a little flaky. Twice a year, it seems to go nuts. The fan comes on, the condenser kicks on, and then the condenser kicks off. Fan keeps running, though. About a minute later, the condenser kicks on, and then off. This keeps up for days, until the freezer is about 40 degrees and everything has spoiled.

I've had a repair guy out 3 times on this. He's never found anything, because the problem seems to always occur on Friday, and by the time he gets out on Monday everything is working again. So the last time it happened I said "Screw the repair guy", and decided to fix it myself. A friend mentioned that problems like this could be the defrost heater or thermostat, so I located that and played around. I ran it without those devices for a while, and it seemed fine. By the time I was done playing, it was working again, so I hooked everything back up.

This weekend it started acting up again. So, knowing what I learned from last time, I removed the cover and bypassed the defrost thermostat--running the heater manually. The heater worked fine (it gets hot, and I've got the small burn on my finger to prove it). I then plugged everything back in, and waited for it to kick on again. When it did, it exhibited the same problems. So, next step--I disconnected the thermostat and printer, and put the cover back on. Within a minute, it was running normally again.

$150 worth of site visit costs from the repair guy, and it looks like my problem is a $10 part. I'm gonna order a new defrost thermostat today and find out for sure.

Friday, January 16, 2004

OK, time to post something. Why? Well, because I like to hear myself type, that's why!

Actually, one of the things that I've been wanting to do is create a hierarchical printer structure between our Windows and Unix systems. Right now it's pretty flat--everyone and everything prints to the IP address of the printer (yeah, not even a DNS name!). Makes for nightmares in administraiton--I can't change the IP, I can't push out new drivers, and most importantly, I can't stop anyone from printing if there's something that needs to be high priority. We could be doing a check run and wind up with someone's shopping list printing out in the middle (on check paper).

So, the plan has been to push everything through the Windows server. Two problems there--first, I needed to use Samba to connect to the Windows print shares (not that there's any problem with Samba--it's just another piece of the puzzle), and secondly, AIX was really limited on how long the share name could be. This was the larger problem--I would wind up having to have two or more shares for the same printer, and the administration doesn't really get any easier that way.

A friend recommended that I try using LPR support in Windows ("Print Services for Unix"). By installing this, Unix systems can connect up to the printer object in Windows, shared or not. Problem 2 remains, though--Name limitation. I thought that if I could move documents through a heirarchical system of queues, I could resolve that. Turns out LPR support works great from Windows, as well. :)

I have a "top end" printer on our server that points directly to the IP of the printer. Unix prints to this printer. This one is not shared (so no confusion amongst users trying to install printers). There is a shared printer, with a descriptive name that fits our naming standard, installed as well. Instead of going to the IP of the printer, though, this goes to the LPR queue represented by the first "top end" printer. So, users print to the shared queue, and documents flow automatically into the LPR queue.

Now, for those "special" jobs like checks, I've got another top end LPR queue. Again, not shared--so it's just visible to the server and the Unix box. Special print jobs will be programatically sent to this queue. Before being sent, though, someone can pause the main top end queue. Jobs from either platform will simply pile up waiting to be printed, while jobs to the "special" queue will go right through.

Next step is to see if there's a way to programmatically pause a remote LPR queue from Unix, so that our ERP system could simply pause the Windows queue on its own. We'll see.

Tuesday, January 13, 2004

Man, 3 months. I'm a bad man.

Anyway, I swear some stuff is coming. I've got about a dozen projects about to reach critical mass. So, just to wet everyone's whistle, here's some of the stuff I'm gonna be posting:

1. Creating a site to site VPN using PPTP and a Windows XP Server/Router.
2. Setting up our VoIP phone system
3. Group Policy and Login Script magic
4. Buying real estate for no money down!

Maybe not 4. :)