Viewport position and direction
You can get information about the view from RegionView3D which can be accessed via space_data.region_3d. 

There are utility functions available in the bpy_extras.view3d_utils module.

You may get the view direction like this

r3d.view_rotation * Vector((0.0, 0.0, -1.0))


the up direction should be

r3d.view_rotation * Vector((0.0, 1.0, 0.0))


and the view location:

r3d.view_matrix.inverted().translation


Or another way

region = context.region
rv3d = context.region_data
view3d_utils.region_2d_to_origin_3d(region, rv3d, (region.width/2.0, region.height/2.0))


Despite its name, RegionView3D.view_location specifies the view target.