To solve the given optimization problem, we first need to identify the decision variables, objective function, and constraints.

- Decision Variables: Let \(x\) be the number of sliding doors produced per day and \(y\) be the number of windows produced per day.
- Objective Function: The company wants to maximize profit. Given that the profit per sliding door is $30 and per window is $25, the objective function can be written as \(Maximize: 30x + 25y\).
- Constraints:
  1. The company must make at least 120 sliding doors per day: \(x \geq 120\).
  2. The company must make at least 110 windows per day: \(y \geq 110\).
  3. The company can make at most 210 sliding doors per day: \(x \leq 210\).
  4. The company can make at most 170 windows per day: \(y \leq 170\).
  5. The company has a contract to ship at least 250 products (either type) per day: \(x + y \geq 250\).

Given these elements, we can formulate the linear programming problem and solve it using Gurobi in Python.

```python
from gurobipy import *

# Create a new model
m = Model("Glass_Company_Profit_Optimization")

# Decision variables
x = m.addVar(lb=120, ub=210, vtype=GRB.CONTINUOUS, name="sliding_doors")
y = m.addVar(lb=110, ub=170, vtype=GRB.CONTINUOUS, name="windows")

# Objective function: Maximize profit
m.setObjective(30*x + 25*y, GRB.MAXIMIZE)

# Constraint: Ship at least 250 products per day
m.addConstr(x + y >= 250, "total_products")

# Optimize the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found. Produce {x.x} sliding doors and {y.x} windows.")
else:
    print("No optimal solution found.")

```