Lay the block of tofu on a few paper towels; top the tofu with a few more, and set something moderately heavy on top. This will help the tofu expel its extra water. Allow to drain for 15 minutes; when done, slice the tofu into a small to medium dice. Set aside.
To a medium saucepan, set over medium heat, add the coconut milk (reserving the can for future use), shallots and garlic. Cook for 2-3 minutes, until the shallots and garlic are softened. Add the chicken stock (or veggie stock) to the reserved can and swish it around (we want as much coconut as possible) until all of the remaining coconut milk has been combined with the stock; pour in the pot and proceed to add the fish sauce (if using) and green curry paste, according to your spice tolerance. Stir until the curry paste has completely dissolved. Bring the heat down to a a medium low, so the mixture is lightly simmering.
Meanwhile, in a small sauté pan, set over medium heat, pour in a tablespoon of olive oil. When the oil is hot, add the the tofu and allow to cook and get crispy on its first side, about 2 minutes. Flip the tofu and cook for an additional minute or so. Remove with a slotted spoon and set aside.
To the coconut milk mixture, add the cauliflower and yellow squash. Cover the pot and cook for 5-7 minutes, until both are tender. Add the oyster mushrooms and reserved fried tofu and cook for an additional minute. Serve over rice and garnish with a few squeezes of lime (a must, in my opinion!) and a sprinkling of cilantro.