Here is a brute-force solution that works in less than a second:
from itertools import combinations, permutations
s = set(range(2,15))
for points in combinations(s,6):
if sum(points) == 51:
points = set(points)
for h,i,j,k,l,m,n in permutations(s-points):
c = 29 - j - i
f = 29 - h - n
e = 30 - c - k - l
g = 30 - e - m - n
d = 30 - l - m - f
b = 30 - j - k - d
if set((b,c,d,e,f,g)) == points:
b,c,d,e,f,g,h,i,j,k,l,m,n
It works by choosing all possible points (b,c,d,e,f,g) and checking that they sum to 51 (to satisfy the 3rd requirement that 1+a+b+c+d+e+f+g is half of the total of 1+all) then it traverses all permutations of the remaining inner points and evaluates what the values of all the points must be if the sums of some of the lines are 30, then checks that those cover the values of the points.