See this related question for relevant discussion.
This has not been done, and there is ample reason to hold that in principle it cannot be done. The premise underlying the question is that there is a crisp cognitive mechanism that tells us that a certain string "is allowed" or "is disallowed", but there is no reason to believe in such a function. The strongest case for some kind of template function that can be made is for defining what a "syllable" is in English, which means what a possible onset, nucleus and coda are.
There is not much serious doubt that it is a systematic fact of English grammar that clusters of obstruent plus oral sonorant are possible in English onsets and that oral sonorant plus obstruent are not possible, thus play is a word, and lpay could not be one. Within that class of "allowed" clusters, some of the predicted sequences don't appear at the expected rate, so voiced fricatives plus liquid are almost non-existent. Examples such as "zloty" all come from foreign languages, though English speakers can pronounce them with no problem, if they happen to know the words. See G.N. Clements & S.J. Keyser CV Phonology and E. Selkirk "The syllable" for accounts of sequencing principles within the syllable. The Clements & Keyser model distinguishes between positive conditions and negative filters, and while positive conditions absolutely must be obeyed, negative filters might admit of exceptions and tend to generate weaker speaker reactions. So for example, labial+labial onsets are very rare, and there are no Germanic words in English with onset *pw, but there are some Spanish-derived words (pueblo, Puerto Rico for those who don't pronounce the latter Porto Rico). There are only 2 words with onset [zw] and most people don't known either word (zwieback, Zwicky). The problem is, there is no way to tell if the described sequences simply don't happen to exist, or are actually explicitly excluded. If your theory of phonotactics says that "doesn't exist" is the same thing as "isn't allowed", then [flænt] would be disallowed for everybody, and [marʌm] is disallowed for everybody except those people acquainted with the word. Since there is no valid test of "is allowed" for words, there isn't a possible list of strings that are cleanly "in" vs. "out". You can probably devise an operational test such as a certain minimum score on a 5-point Likert scale for speaker reactions, but that will not actually give you a precise partitioning of strings of English phonemes.