#

## Chapter 5

## Installing and Broadcasting Channels

So now you have a transmitter up and running on your transmitter site. And that transmitter is transmitting nothing, which is about as useful as a TV or radio station broadcasting nothing but static. The next step, then, is to publish one or more channels on that transmitter for tuners to subscribe to.

This chapter describes channel publishing from the transmitter administrator's point of view, where a channel has already been written and is ready to go. In many cases—if you're in a small organization, for example, or doing this on your own time—you'll be both channel developer and transmitter administrator. If that's the case here, you'll get an idea of how channel publishing works and how to use Castanet Publish. Later in this book, in Part III, you'll learn more about constructing channels.

### How Channel Publishing Works

The first thing to understand about channel publishing in Castanet is that channel publishing is not at all like Web publishing, even though the Castanet Transmitter and a Web server have similar purposes.

With Web publishing, you're placing HTML files and images and other media on a Web server. Usually you don't have to do anything other than put them in the right place—you can copy the files, or FTP them, or use a special HTML editor that will let you "save to" the server. As long as the Web server can find your files, those files are considered published. (See Figure 5.1.) It's a very simple process.

Figure 5.1. Web server publishing.

With Castanet channels, the process of publishing is much more deliberate. To publish channels on a transmitter, you run a program called Castanet Publish, which not only copies the files from your internal development directory to the final directory where the transmitter can find them, but also enables you to configure other properties of the channel such as its name and how frequently it will be updated. (See Figure 5.2.) You must run publish to accomplish this; copying the files will not work.

Figure 5.2. Channel publishing using Castanet Publish.

> ####

> Note

> Castanet Publish used to be called Castanet Putback. If you see references to channel putback or to the putback command, keep in mind putback and publish are the same thing.

You also use the publish tool when you have updates to a channel; whenever you change something that you want to be propagated out to your users, you run publish. The publish tool will figure out the differences between your old channel and the new one, and when next a tuner asks for an update to a channel, those differences—and only those differences—will be downloaded and installed. At every step, then, in the channel-publishing process, you'll be using the publish tool.

This chapter, then, will tell you how to use it.

### Starting the Publish Tool

Castanet Publish comes with the Castanet Transmitter, and it is installed in the same directory as the transmitter software.

To start Castanet publish on Windows, navigate through the Start menu to the publish program. (See Figure 5.3.)

Figure 5.3. Starting the publish tool.

To start Castanet Publish tool on Solaris, run publish from the command line:

`/opt/MRBtrans/castanet/transmitter/publish`

On both Windows and Solaris, the publish tool will launch and display an opening screen. Choose Channels" to display the Channels Under Development screen (shown here in Figure 5.4).

> ####

> Note

> This screen looks rather empty because you haven't published any channels yet. Keep reading.

Figure 5.4. The main Channels Under Development screen.

From here you can add and remove channels as well as modify their properties so that they behave differently.

### Quick Start: Publishing a Sample Channel

Let's run through a quick example so you can get a feel for how the publish tool works. We'll use, as an example, one of the sample channels that comes with the Castanet Transmitter.

The Castanet sample channels are installed in the main transmitter software directory, in a directory called `channels`. For example, on Windows, if you installed the software in the default location, they would be located in `C:\Marimba\Castanet Transmitter\channels`. On Solaris, again, if you used the default installation, they would be in `/opt/MBRtrans/castanet/transmitter/channels`. The channels in these directories are all set up and ready to go—all you have to do is use publish to make them available on your transmitter.

We'll use the Crossword channel. Make note of the directory path to that channel, particularly if you've installed the software in locations other than the defaults.

Switch to the publish tool. At the Channels Under Development screen, choose Add to add a new channel. The Add/Create Channel screen appears. Type in the pathname to your channel directory, on Windows starting from the disk letter (`C:` or `E:`) and in Solaris from the root directory (`/`). So, for example, Figure 5.5 shows the pathname to the Crossword channel in Windows.

> ####

> Note

> The directory you type in here is the local development directory for your channels, not the channel directory for the transmitter itself. The publish tool will create and manage that directory itself. This directory is where the publish tool should get your files from.

Figure 5.5. Add a channel using Castanet Publish.

Choose Add to add the channel to the list of channels the publish tool manages. The screen returns to the Channels Under Development screen, with the path to the Crossword channel listed (as shown in Figure 5.6).

Figure 5.6. The Crossword channel added to the listing.

Usually at this point, the next step would be to define the channel's properties. Because this is an example channel for Castanet, the properties have already been set for this channel.

There is one property panel you will need to fill out, and that's the transmitter panel. Choose Edit to open the property panels, and the Transmitter tab to see the transmitter properties (if they are not already visible). Figure 5.7 shows the Transmitter properties panel:

Figure 5.7. Transmitter properties.

For this channel, the channel and the transmitter are running on the same system, so the transmitter hostname will be `localhost` (you can also do your channel development on another host on the network, and the publish it using the publish tool to a remote transmitter). The two other things you'll need to check for in this example are the port number (it should match the port number you actually installed the transmitter on—here I've used `5282`), and, if your transmitter has one, you'll also need to enter the transmitter password. After you enter or change the values, be sure to click either Apply or Done to make sure the values are saved.

You can examine the other possible properties for this channel to see what sort of values those properties can have (we'll cover all the properties in detail later on in this chapter), and then the final step is to actually publish the channel. To publish the channel, you'll use the Publish button from any of the properties panels.

> ####

> Note

> Make sure the Preview box is not checked when you choose Publish. You'll learn about previews later.

The publish tool will switch to the Publish window, generate the necessary property files for publishing, and publish the channel. Figure 5.8 shows the result when the publish occurred successfully.

Figure 5.8. A successful publish.

The last step, then, is to test to see if the publish did actually occur. You can do this by getting the channel listing for your transmitter from a Castanet Tuner. So, for example, Figure 5.9 shows the channel listing from my transmitter, which shows the Crossword channel successfully published and available.

Figure 5.9. Transmitter listing with new channel in place.

What happens when you need to update the crossword channel? All you have to do is make the changes in your local development directory, start up Castanet Publish, double-click the channel you want to update, and click on the Publish button. You don't have to define the channel's properties all over again, unless you want to change any of them; just choose Publish to accomplish the update.

And that's it! You've just published your first channel. Although the startup process may be somewhat longer for a brand new channel, after you've got it configured in the publish tool it's easy to keep updating it.

Continue through the rest of this chapter to learn about the publish tool in greater detail.

### Using the Publish Tool

You use Castanet Publish to publish a channel—in other words, to move it from a local development directory to its final location in the transmitter directory. You must use the publish tool to do this; simply copying the files over will not work. You can use the publish tool on the same system as the transmitter, or from any other system on your network (or on the Internet at large, for that matter) for remote publishing.

Adding and Creating Channel Directories

The first step to publishing a channel is to add that channel's development directory to the channel list inside Castanet Publish. To add a local channel to that list, choose the Add button from the Channels Under Development window. The Add channel screen appears. (See Figure 5.10.)

Figure 5.10. Add a channel.

Enter the full pathname of the local channel-development directory, using the pathname conventions of the local system (back slashes on Windows, forward slashes on UNIX).

> ####

> Note

> By the time you read this, Castanet Publish will most likely have a Browse button you can use to locate your channel directory, so you won't have to type it by hand.

> ####

> Note

> Keep in mind that the directory name you choose is that of your local channel-development directory (where the channel source comes from), not the transmitter root (where the channels are published to). The publish tool will create the directories it needs on the transmitter root; you don't need to create anything by hand in that directory.

Choose either Add of Create to add the channel to the Channel Development list. Add is used to add channel directories that already have configuration files—most typically directories for channels that have been published before. For new channels, most of the time you'll use Create instead.

> ####

> Note

> The Create button is somewhat misleading; if the channel directory you enter in the Directory field already exists on your hard drive and has files in it, Create will not overwrite that directory. It'll simply add it to the list.

You can also add a channel directory to the channel list before you even do any work to develop that channel. This will create that directory and set the initial properties of the channel. By creating a channel directory in publish before you start working, the publish tool will know all about the channel and its properties by the time you're ready to publish it, and the publishing process will be simple.

Setting the Publish Proxy

If you're using the publish tool across the boundaries of a firewall—for example, if your development machine is on an internal network and your transmitter is on the firewall—you'll most likely need to specify proxy information for the Publish tool so that you can publish channels.

To enter proxy information for the publish tool, select the Proxy button from the main Channels Under Development screen. The Proxy screen will appear (shown in Figure 5.11)

Figure 5.11. Publish tool proxy information.

Enter the host name and port for your firewall HTTP proxy information. This is often the same value you would use for a Web browser to access systems outside the firewall; check with your firewall administrator if you're not certain what to put here.

### Getting Help

As with the Castanet Tuner and Transmitter, online help is available for most aspects of Castanet Publish through the Help button on each screen. The help files for publish are a set of Web files contained on Marimba's Web site or as a channel. (It's part of the transmitter documentation.) Choosing the Help button takes you to the help for that item in your Web browser (in Windows it launches your default Web browser; in Solaris, that browser must already be running).

Creating or Modifying Channel Properties

When you have an entry for your local channel, you can create or modify the properties of that channel.

Channel properties include everything from the transmitter on which to publish the channel to the description of that channel, its parameters, the frequency of its updates, and other information. A lot of the information you create as channel properties shows up in the Channel Properties panel in the tuner.

You can create and edit the properties for a channel even if that channel doesn't yet exist, although you will need to create a directory for that channel and have it listed in the Channels Under Development window. Channel properties are stored in a file called `properties.txt` in your channel development directory. You can set up the properties for a new channel before you ever start developing that channel.

> ####

> Note

> Because channel properties are stored in a text file, you can always create or edit that file by hand (for example, to set up a property template). Some properties, however, must be set by Castanet Publish itself.

To create or edit the properties for a channel, either double-click that channel's entry in the Channels Under Development list, or select a channel and choose Edit.

The Channel Properties screens will appear. You have several panels of properties to choose from (note the tabs across the top of the screen); each of these panels is described in the next couple of sections.

After you're done modifying properties on any panel, choose the Apply button to save those properties and then the Done button to return to the Channels Under Development window. (Choosing Done will also save all the properties for you.)

Transmitter Properties

Transmitter properties are the values the publish tool will need to actually publish the channel on a transmitter. Figure 5.12 shows the Transmitter Properties panel.

Figure 5.12. The Transmitter Properties panel.

This panel is divided into two sections: Transmitter properties and Channel properties. The Host and Port fields in the transmitter section indicate the transmitter on which to publish this channel. So you could, for example, develop a channel on any system on the network and then publish that channel to a transmitter on another system. In the example shown in Figure 5.12, the channel-development directory and the transmitter are on the same system, so the host is `localhost` (it could also be the name of the transmitter itself; `localhost` is a useful shortcut). The port number must be the same as the port number you're running the transmitter on; `80` is the default. Here I've got my transmitter running on port `5282`.

Use the password field in the transmitter section to specify the password for that transmitter, if the transmitter has been set up to require a password. Note that if you're running publish on the same system as the transmitter (that is, you've used localhost as the transmitter name), that you have full access to the transmitter and all its channels.

The Ignore field in the channel section is for files in the development directory that are not to be included in the final channel package. You can use wildcards to exclude classes of filenames. So, for example, the default files to ignore are backup files (files ending with `~` or with `.bak`) and Java source files (files ending with `.java`). You can also include subdirectories in this list: for example, an `SCCS` directory that contains files under source-code control or a `testing` directory for local tests. The goal here is to exclude files in your channel-development directory that are not part of the channel itself.

> ####

> Caution

> Do not include `*.txt` in the Ignore field, because each channel has files called `properties.txt` and `parameters.txt` file to define its properties and parameters. Ignoring all files ending with `*.txt` will also ignore these files, and your channel won't show up when you publish it.

The password field in the Channel section is used for a password specific to this channel. The difference between the transmitter password and the channel password is in access: If you have the transmitter password, you can publish any channel to that transmitter; if all you have is the channel password, you can only publish that one channel. Usually you'll enter either the channel password or the transmitter password, but not both (if you enter the channel password, you don't need the transmitter password.)

To create a password-protected channel, include the transmitter password, if any, and also include the initial channel password. After you publish the channel for the first time, the channel password will be stored on the transmitter and can be used to update that channel without also needing to know the transmitter password.

To change the password of a password-protected channel, you'll have to delete that channel from the transmitter, and then republish it with the new password.

> ####

> Note

> This somewhat awkward procedure for changing the password will be made better in a future release.

General Channel Properties

The general channel properties are the properties that tell the tuner how to launch and handle your channel—for example, which Java class file contains the starting code for the rest of the channel. Figure 5.13 shows the General Channel Properties windows.

Figure 5.13. The General Channel Properties windows.

The Name field is the name of the channel as it will appear in the tuner. Be sure and choose a distinctive name for your channel (something better than MyChannel, for example), so that users of that channel have some idea what it is. (You can add a longer description of it in another property.)

The Type pull-down menu determines what kind of channel this is. You have four choices for the types of channels you can create, each of which gives you different options for other properties: Application, Applet, Presentation, and HTML.

An application is, as you might expect, a channel application written in Java. If you choose application from the Type menu, you'll have the fields shown in Figure 5.13 to fill in. Those fields include

- The Classpath field, which indicates the directories or `.zip` files in which the tuner should look for Java classes relating to this application. Classpath directories are subdirectories of the channel's main directory; if you've stored all your Java class files in the channel directory itself, you can leave this blank. If you've packages your class files into a zip archive, use the name of that archive here. Separate multiple directories or filenames with a colon—for example, `classes:classes/classes.zip`.
- The Main Class field, which contains the name of the primary application class (the one to run first). In this field, the class should appear without the `.class` extension; for example, if your main application is called `Main.class`, you'll want to just put Main in this field.
- The GUI file field is used to indicate a presentation file for this application. Presentation files, which have a `.gui` extension, are created using Castanet Bongo (which you can learn more about in Chapter 9, "Creating Channels Using Bongo," and in Official Marimba Guide to Bongo, also published by Sams.net.)

The second type of channel you can create is an applet—or rather, you can use a Java applet written to work inside a Web page as a channel. Choosing Applet as the type of channel you're creating brings up a number of new fields (shown in Figure 5.14).

Figure 5.14. Applet properties.

The names of many these fields correspond to the values of the `<APPLET>` tag inside an HTML file, and include

- The Code field is the name of the main applet class (the one you would usually name in the `CODE` attribute of the `<APPLET>` tag), minus the .class extension. So, for example, if your main applet class was `DataBaseApplet.class`, you'd enter `DataBaseApplet` here.
- The Code Base field is the location of your channel classes, relative to the channel directory itself, and is identical to the value of the `CODEBASE` attribute in the `<APPLET>` tag. Otherwise, it's similar in use to the Class path field.
- The Width and Height fields are the width and height of the applet, in pixels. You must include values here for the width and height of the applet.

The third kind of channel you can configure is a Presentation channel. Presentation channels are channels created with the Marimba Bongo application (you'll learn a little about Bongo in Chapter 9; the Official Marimba Guide to Bongo contains the definitive guide to creating presentations with Bongo). The only new value you'll need to enter here is the name of the Bongo .gui file for the main presentation—for example, `Headlines.gui` or `Calendar.gui` or `SomeOtherPresentation.gui`. Note that unlike the Java class files for applications and applets, for presentations the main presentation file must have the `.gui` extension.

The final type of channel in the pop-up menu is an HTML channel. For HTML channels, you'll need to enter the name of the topmost home page for the channel—typically `index.html`. The value of class path is ignored for HTML channels, as any applets contained in those channels are indicated using `<APPLET>` tags.

Frequency of Updates

The Update panel is for update properties—that is, how often tuners will check back to see if there are updates. There are two states a channel can be in during which updates can occur: active and inactive. An active channel is one that's actually up and running on a user's system, and an inactive channel is one that's subscribed to, but not currently running. For each channel state you can choose an update interval and a Data available action.

The update intervals fall in frequencies of every few minutes, hourly, daily, weekly, and never for active channels, or less frequently (hourly, daily, weekly, or never) for inactive applets. (See Figure 5.15.)

Figure 5.15. Update frequency properties.

Keep in mind that the update frequency is not how often you update your own channel; you can update it more or less frequently than you set in these properties, with no penalties or problems. What these values do determine is how often the tuner will check back to the transmitter to see if there is new information to download.

Choose the update interval for both the active and inactive states for the channel. Be sure and choose a realistic update interval—just because you can force an update every few minutes does not mean you should. Excessive updates put a load on the tuner, on your transmitter, and on the network between the two. Try and choose a reasonable update interval for each channel state.

The values for the Data Available Action drop-down lists affect how the channel will react to an update—for example, if it will ignore the new data until the channel is started or restarted, to start up or restart the channel altogether, or to perform even more complex procedures. You'll learn more about these when you start developing your own channels.

Channel Icons

When your channel is subscribed to by a tuner, several icons are used to identify that channel on the desktop itself and inside the tuner. Use the icon properties to customize those icons. (If you don't indicate any special icons, the default icons will be used.) Figure 5.16 shows the icon properties.

Figure 5.16. Channel icon properties.

The values for each of these fields are pathnames to image files relative to the channel directory (for example, `icon.gif` or `icons/active.gif`). The four values are as follows:

- Icon (GIF): This is a large icon (64 pixels square), representing the channel. (For example, in Solaris, this icon will be used as the desktop icon when the channel is iconified.) The file given must be in GIF format; it'll be converted into BMP format for Windows.
- Icon (BMP): This BMP-format icon is the same as the GIF version, but is used only on Windows if the GIF version doesn't look right.
- Thumbnail inactive: Inside the tuner, each channel has a small icon in the channel listing. The inactive icon is displayed when the channel is subscribed to, but not running. The thumbnail icon should be in GIF format and 16 pixels square.
- Thumbnail active: Same as the previous icon, except it's displayed when the channel is running. Active icons are often red versions of the inactive icons. This one is also in GIF format and 16 pixels square.

Channel Contact Information and Descriptions

The next two panels are for optional channel contact information and a channel description. Both of these are used by the tuner to help the reader figure out what the channel is for and whole to contact if they have difficulties with it.

The Contacts panel (shown in Figure 5.17) is used to indicate the author or the administrator of the channel. (They might very well be the same person.) The author would be the person to contact for bugs in the channel itself; the administrator would be the person to contact if updates have stopped or if a transmitter has become inaccessible.

Figure 5.17. Channel contacts.

Enter the name and e-mail address of both the channel's author and administrator in the fields on this page and progress to the Description panel.

The Description panel, shown in Figure 5.18, continues the information from the previous page and includes fields for copyright information (if necessary) and a general description of the channel.

Figure 5.18. The channel description.

Copyright information is used to legally identify the copyright holder of the channel, which may not be the same person or entity that authored the channel. If you've written a channel that's in the public domain (all use free and unrestricted for any purpose), you might want to specify that here.

The channel description is used to describe the channel in as much detail as you'd like. This is your chance to explain what the channel is for and why it's useful. This information appears in the tuner in the Listing panel (see Figure 5.19), as well as in the page that appears when you use a browser to explore a transmitter. As with the channel contact information, both the channel description and the copyright information are optional.

Figure 5.19. Channel description in the tuner.

Hidden Channels

One other option in the Description panel deserves mentioning: The small checkbox in the corner marked "hide." (See Figure 5.20.)

Figure 5.20. Hide this channel.

If you select this box and then publish the channel, that channel will be "hidden." Hidden channels do not show up in the listing of transmitters on a channel, nor do they appear if you browse a transmitter with a Web browser. However, if you or anyone else knows the name of the channel, they can still subscribe to it directly using the New Channel menu item in the tuner.

Hiding channels can be useful for testing to see whether a channel is working correctly without letting regular visitors to the transmitter know it is there. You can publish a hidden version of the channel, test it extensively, and then publish it again with the hidden option turned off to make it available for public use.

You could also use the hidden option to restrict access to a channel—just give out the name to those you want to be able to subscribe to it. Hiding channels, however, is a form of "security through obscurity"—that is, it isn't very secure at all.

> ####

> Note

> If you're looking for a better way to create secure channels, Castanet will have the capability to create password-protected channels in the next release.

Applet Parameters

The last panel in the properties screen is for channel parameters. These are usually used for applet channels, and they are the key value pairs that would normally appear in `<PARAM>` tags inside an HTML file. You can also use parameters for options to an application channel; all the parameters specified in this list are passed on to the channel itself for processing.

Channel parameters are indicated by name/value pairs, separated by an equal sign (=), with each pair on its own line. Parameters are case-insensitive, and order is not important.

Figure 5.21 shows some sample parameters for an applet that displays news headlines.

Figure 5.21. Applet parameter properties.

Channel parameters, unlike other channel properties, are stored in their own file in your development directory, called `parameters.txt` (normal properties are stored in `properties.txt`).

### Publishing and Updating Channels

With a channel directory in the Channels Under Development list and a set of properties defined, the moment of truth is when you actually publish the channel to the transmitter and test to see if it's actually there and working.

To publish a channel, choose the channel from the Channels Under Development list and select Edit (or just double-click the channel from the list). Then choose the Publish button. The publish tool will switch to the Publish window, contact the transmitter's host, create or update the `properties.txt` and `parameters.txt` files (if necessary), and then process and store the files on the transmitter. If the publishing process was successful, you'll get a message to that effect. Figure 5.22 shows the publish process for a simple channel.

Figure 5.22. A channel, successfully published.

To update a channel, all you do is republish it: double-click its directory from the Channels Under Development list and choose Publish. You don't have to add the local development directory to the list or redefine all its properties again; the publish tool saves that information for you.

What if you want to publish a channel to multiple transmitters? You'll need to do this serially, changing the transmitter properties each time to point to a different transmitter.

Previewing Channels

The publish tool also provides one other publishing feature: a Preview. Previewing a channel checks to make sure you have access to the transmitter, updates all the channel's properties and parameters, and checks to make sure you have but doesn't actually publish the channel on the transmitter. You can use preview to test the connection to a transmitter, update changes to the properties or parameters for that channel, or find out if the channel needs to be updated, in case you've forgotten.

Password-Protecting Channels

As you learned earlier, in the channel's transmitter properties you can set up a channel password for updating the channel. Use the channel password to prevent other people from publishing your channel.

If the transmitter your publishing to requires a transmitter password, you'll have to enter both the transmitter and channel passwords the first time you publish the channel. After that first time all you need is the channel password. So, for example, rather than giving out the transmitter password to everyone who publishes to the transmitter you could set up a channel for a not-very-trustworthy developer such that he or she would be able to publish only their own channels.

### Troubleshooting

Sometimes when you try and publish a channel, the publishing process won't work for many different reasons. Usually there will be an error message in the Publish box that will give you some indication of what went wrong and how to fix it. Here are a few of those messages:

- Publish ignored. You most likely have the Preview box checked inside the properties for the channel. Choose Done and edit the properties to remove the check from the Preview checkbox.
- Couldn't connect to trans.myserver.com:80. Make sure that you're running a transmitter on that server and port, that the transmitter is running, and that you have access to that system.
- Incorrect password for transmitter. The password you typed in the transmitter properties panel does not match the password the transmitter itself defines for either the transmitter itself or for the channel. Double-check the passwords to make sure they match.
- No permission to connect to transmitter. Your hostname is not in the list of trusted hosts defined by the transmitter. You'll need to reconfigure the transmitter to include the hostname you want to publish from.

For many other errors, you might be able to get some information about what went wrong from the transmitter's log files. There's a special log file for publishing channels called `putback.log`, which is updated whenever anyone publishes a channel. You'll learn more about this log file in the next chapter.

### Removing Channels

There are actually two meanings to the phrase "removing channels." You can remove a channel from the listing in the publish tool, which means that you're no longer publishing it from the local system (or no longer updating it), or you can remove it altogether from the transmitter.

To remove a channel from the Channels Under Development list, simply choose its pathname and select Remove. The directory will vanish from the list. Note that this does not delete anything except that channel's entry in this list; it does not remove that channel from the transmitter, nor does it delete any files from the local development directory. In fact, it doesn't even delete the properties and parameters files, so if you added that same directory to the publish tool again, all the old settings would become available again.

Removing a channel from the Channels under Development list is most useful when you're simply not responsible for publishing that channel any longer—perhaps the channel will receive no more updates, or someone else now has responsibility for that channel.

To delete a channel from a transmitter, select the channel you want to delete and choose the Delete button. The publish tool will contact the transmitter and remove the channel from that transmitter. The channel will remain listed in the Channels Under Development list and will continue to remain intact on the local system; it just won't be available on the transmitter any more.

If users have subscribed to the channel you've removed, the next time they attempt to update that channel, an error message will appear ("no such channel"). They can then choose to remove that channel or continue with the version they currently have.

### Using Publish from the Command Line

Although the vast majority of this chapter has discussed using the publish tool with a graphical user interface (GUI), you can also use Publish from a command line. You can use the command-line version of the publish tool to automate the publishing process, for example, to update a channel every night at midnight.

On Solaris, the command-line version of the publish tool is the same as the GUI version (running it with arguments prevents the GUI from executing). On Windows and Windows 95, you'll need to run the version of publish stored in the Command subdirectory of your transmitter installation (typically `C:\Marimba\Castanet Transmitter\Command\putback.exe`). In Windows 95, run the Publish command from inside a DOS shell. Both versions of publish have the same options and arguments.

To publish a channel on a transmitter using the command-line version of publish, simply use publish with the pathname to the directory (which can be an absolute or relative pathname). For example, the Windows version might look like this:

`Publish C:\Development\Channels\AuthorEvents`

The equivalent on Solaris might be something like this:

`publish /home/src/channels/AuthorEvents`

You can also publish a whole directory of channels using wildcards. For example:

`publish chnnels/*`

Each of these versions of publish will publish the channel on a transmitter installed on the same machine, running on port `80`. To publish a channel on a remote transmitter, use the `-host` option with the name and port number of the host:

`publish -host trans.myserver.com:5282 channels/*`

> ####

> Note

> The port number is optional. If you've installed your transmitter on port `80`, you don't need to specify that port number there.

The `-ignore` option enables you to indicate files or groups of files inside your channel development directory that are not to be published—for example, source files, backup files, make files, or files under source code control. Indicate files to ignore using wildcards, separated by commas, inside single quotes:

`publish -ignore '*.bak,*.java,SCCS/*'`

This command ignores all files with the extension .bak (saved backup files from a text editor), files with the extension `.java` (Java source files), and all the files under the subdirectory SCCS (files under source code control). Without an `-ignore` option, publish will by default operate as if the ignore option was `'*.bak,*~,core,*.java'`.

> ####

> Note

> You must include the filenames to ignore inside single-quotes. Using double-quotes or no quotes at all may cause the wildcard expressions to be expanded before publish can see them (resulting in different files being ignored than you expect).

The `-n` option is used for previewing channels. The `-n` option lists the operations that the publish tool will do (creating files, contacting the transmitter, and so on), but it does not actually publish the files on the transmitter. This can be useful for debugging the publishing process before you actually do it.

The `-quiet` option is useful for automatic updates such as with UNIX `cron` entries. The `-quiet` option publishes a channel to a transmitter without printing any debugging or other information to the screen.

And, finally, to remove a channel from a transmitter, use the `-delete` option. With the delete option you can specify the channel to delete in one of two ways:

- The pathname of the channel, in which case the channel is deleted from the last transmitter it was published to.
- The name of the channel, in which case you must also indicate the hostname and port of the transmitter with the `-host` option, like this:

> `publish -delete -host trans.myserver.com:5282 ExcellentChannel`

Table 5.1 shows the options to the `publish` command and the actions they produce.

Table 5.1. The options and results for the `publish` command.

Option Result

> `-host` Indicates the hostname of the transmitter. The hostname also can have an optional port number.

> `-ignore` A set of files to ignore when publishing a channel to a transmitter, surrounded by single quotes. Use wildcards to indicate sets of files, and commas to separate different sets.

> `-n` Preview the results of a publish, but don't actually store anything on the transmitter.

> `-quiet` Publish the channel without any output to the screen or console.

> `-delete` Delete the channel from a transmitter. With the `-delete` option you can indicate a channel by its local pathname, in which case it's deleted from the transmitter it was last published to, or by channel name, in which case you must also include the `-host` option to indicate which transmitter you want to delete it from.

### Summary

At first glance, administering a transmitter seems an awful lot like administering a Web server. You install the software, start it running, and browsers or tuners connect to it and retrieve what they need. The most significant difference is in channel publishing. With Web pages, you just copy the files to the right directory and you're done. With channels, you have to go through this intermediate step: you have to use Castanet Publish to publish the channels so that they're available for that transmitter. Then, when they're published, you use the publish tool to update them each time there's a change.

In this chapter you learned how to use the publish tool to administer channels: to add new channels to the channel-management list, to set their properties, and, finally, to publish them to a transmitter and update them after they're there. Installing and configuring the transmitter is easy; for the most part you set it up and you're done. It's the channel configuration that will most likely take up more time and will make up the bulk of transmitter configuration. After reading this chapter, you should have a grasp of just about every aspect of channel management, whether or not you're even responsible for writing the channels themselves.