Light and eye position should be transformed from world to camera space, as RipTorn said. Eye position is always (0, 0, 0).
Light is transformed that way: light_pos = matrix * (light - camera)
where 'light_pos' is light position in camera space, 'matrix' is modelview matrix, 'light' is light position in world space and 'camera' (eye) is camera world space position.
gluLookAt (cx, cy, cz,...);glGetFloatv (GL_MODELVIEW_MATRIX, matrix); // float matrix [16]// float n [3]: holds '(light - camera)'n [0] = light [0] - cx;n [1] = light [1] - cy;n [2] = light [2] - cz;// float light_pos [3]: camera space light positionlight_pos [0] = matrix [0] * n [0] + matrix [4] * n [1] + matrix [8] * n [2];light_pos [1] = matrix [1] * n [0] + matrix [5] * n [1] + matrix [9] * n [2];light_pos [2] = matrix [2] * n [0] + matrix [6] * n [1] + matrix[10] * n [2];cgGLSetParameter3fv (light_position, light_pos);cgGLSetParameter3fv (eye_position, eye); // float eye [3]: eye = 0