43956d550a44_add_tables_for_pjsip.py 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. """Add tables for pjsip
  2. Revision ID: 43956d550a44
  3. Revises: 4da0c5f79a9c
  4. Create Date: 2013-09-30 13:23:59.676690
  5. """
  6. # revision identifiers, used by Alembic.
  7. revision = '43956d550a44'
  8. down_revision = '4da0c5f79a9c'
  9. from alembic import op
  10. import sqlalchemy as sa
  11. YESNO_VALUES = ['yes', 'no']
  12. PJSIP_CID_PRIVACY_VALUES = ['allowed_not_screened', 'allowed_passed_screened',
  13. 'allowed_failed_screened', 'allowed',
  14. 'prohib_not_screened', 'prohib_passed_screened',
  15. 'prohib_failed_screened', 'prohib', 'unavailable']
  16. PJSIP_100REL_VALUES = ['no', 'required', 'yes']
  17. PJSIP_CONNECTED_LINE_METHOD_VALUES = ['invite', 'reinvite', 'update']
  18. PJSIP_DIRECT_MEDIA_GLARE_MITIGATION_VALUES = ['none', 'outgoing', 'incoming']
  19. PJSIP_DTMF_MODE_VALUES = ['rfc4733', 'inband', 'info']
  20. PJSIP_IDENTIFY_BY_VALUES = ['username']
  21. PJSIP_TIMERS_VALUES = ['forced', 'no', 'required', 'yes']
  22. PJSIP_MEDIA_ENCRYPTION_VALUES = ['no', 'sdes', 'dtls']
  23. PJSIP_T38UDPTL_EC_VALUES = ['none', 'fec', 'redundancy']
  24. PJSIP_DTLS_SETUP_VALUES = ['active', 'passive', 'actpass']
  25. PJSIP_AUTH_TYPE_VALUES = ['md5', 'userpass']
  26. PJSIP_TRANSPORT_METHOD_VALUES = ['default', 'unspecified', 'tlsv1', 'sslv2',
  27. 'sslv3', 'sslv23']
  28. PJSIP_TRANSPORT_PROTOCOL_VALUES = ['udp', 'tcp', 'tls', 'ws', 'wss']
  29. def upgrade():
  30. op.create_table(
  31. 'ps_endpoints',
  32. sa.Column('id', sa.String(40), nullable=False, unique=True),
  33. sa.Column('transport', sa.String(40)),
  34. sa.Column('aors', sa.String(200)),
  35. sa.Column('auth', sa.String(40)),
  36. sa.Column('context', sa.String(40)),
  37. sa.Column('disallow', sa.String(200)),
  38. sa.Column('allow', sa.String(200)),
  39. sa.Column('direct_media', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  40. sa.Column('connected_line_method',
  41. sa.Enum(*PJSIP_CONNECTED_LINE_METHOD_VALUES, name='pjsip_connected_line_method_values')),
  42. sa.Column('direct_media_method',
  43. sa.Enum(*PJSIP_CONNECTED_LINE_METHOD_VALUES, name='pjsip_connected_line_method_values')),
  44. sa.Column('direct_media_glare_mitigation',
  45. sa.Enum(*PJSIP_DIRECT_MEDIA_GLARE_MITIGATION_VALUES, name='pjsip_direct_media_glare_mitigation_values')),
  46. sa.Column('disable_direct_media_on_nat', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  47. sa.Column('dtmf_mode', sa.Enum(*PJSIP_DTMF_MODE_VALUES, name='pjsip_dtmf_mode_values')),
  48. sa.Column('external_media_address', sa.String(40)),
  49. sa.Column('force_rport', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  50. sa.Column('ice_support', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  51. sa.Column('identify_by', sa.Enum(*PJSIP_IDENTIFY_BY_VALUES, name='pjsip_identify_by_values')),
  52. sa.Column('mailboxes', sa.String(40)),
  53. sa.Column('moh_suggest', sa.String(40)),
  54. sa.Column('outbound_auth', sa.String(40)),
  55. sa.Column('outbound_proxy', sa.String(40)),
  56. sa.Column('rewrite_contact', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  57. sa.Column('rtp_ipv6', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  58. sa.Column('rtp_symmetric', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  59. sa.Column('send_diversion', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  60. sa.Column('send_pai', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  61. sa.Column('send_rpid', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  62. sa.Column('timers_min_se', sa.Integer),
  63. sa.Column('timers', sa.Enum(*PJSIP_TIMERS_VALUES, name='pjsip_timer_values')),
  64. sa.Column('timers_sess_expires', sa.Integer),
  65. sa.Column('callerid', sa.String(40)),
  66. sa.Column('callerid_privacy', sa.Enum(*PJSIP_CID_PRIVACY_VALUES, name='pjsip_cid_privacy_values')),
  67. sa.Column('callerid_tag', sa.String(40)),
  68. sa.Column('100rel', sa.Enum(*PJSIP_100REL_VALUES, name='pjsip_100rel_values')),
  69. sa.Column('aggregate_mwi', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  70. sa.Column('trust_id_inbound', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  71. sa.Column('trust_id_outbound', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  72. sa.Column('use_ptime', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  73. sa.Column('use_avpf', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  74. sa.Column('media_encryption', sa.Enum(*PJSIP_MEDIA_ENCRYPTION_VALUES, name='pjsip_media_encryption_values')),
  75. sa.Column('inband_progress', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  76. sa.Column('call_group', sa.String(40)),
  77. sa.Column('pickup_group', sa.String(40)),
  78. sa.Column('named_call_group', sa.String(40)),
  79. sa.Column('named_pickup_group', sa.String(40)),
  80. sa.Column('device_state_busy_at', sa.Integer),
  81. sa.Column('fax_detect', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  82. sa.Column('t38_udptl', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  83. sa.Column('t38_udptl_ec', sa.Enum(*PJSIP_T38UDPTL_EC_VALUES, name='pjsip_t38udptl_ec_values')),
  84. sa.Column('t38_udptl_maxdatagram', sa.Integer),
  85. sa.Column('t38_udptl_nat', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  86. sa.Column('t38_udptl_ipv6', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  87. sa.Column('tone_zone', sa.String(40)),
  88. sa.Column('language', sa.String(40)),
  89. sa.Column('one_touch_recording', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  90. sa.Column('record_on_feature', sa.String(40)),
  91. sa.Column('record_off_feature', sa.String(40)),
  92. sa.Column('rtp_engine', sa.String(40)),
  93. sa.Column('allow_transfer', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  94. sa.Column('allow_subscribe', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  95. sa.Column('sdp_owner', sa.String(40)),
  96. sa.Column('sdp_session', sa.String(40)),
  97. sa.Column('tos_audio', sa.Integer),
  98. sa.Column('tos_video', sa.Integer),
  99. sa.Column('cos_audio', sa.Integer),
  100. sa.Column('cos_video', sa.Integer),
  101. sa.Column('sub_min_expiry', sa.Integer),
  102. sa.Column('from_domain', sa.String(40)),
  103. sa.Column('from_user', sa.String(40)),
  104. sa.Column('mwi_fromuser', sa.String(40)),
  105. sa.Column('dtls_verify', sa.String(40)),
  106. sa.Column('dtls_rekey', sa.String(40)),
  107. sa.Column('dtls_cert_file', sa.String(200)),
  108. sa.Column('dtls_private_key', sa.String(200)),
  109. sa.Column('dtls_cipher', sa.String(200)),
  110. sa.Column('dtls_ca_file', sa.String(200)),
  111. sa.Column('dtls_ca_path', sa.String(200)),
  112. sa.Column('dtls_setup', sa.Enum(*PJSIP_DTLS_SETUP_VALUES, name='pjsip_dtls_setup_values')),
  113. sa.Column('srtp_tag_32', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  114. )
  115. op.create_index('ps_endpoints_id', 'ps_endpoints', ['id'])
  116. op.create_table(
  117. 'ps_auths',
  118. sa.Column('id', sa.String(40), nullable=False, unique=True),
  119. sa.Column('auth_type', sa.Enum(*PJSIP_AUTH_TYPE_VALUES, name='pjsip_auth_type_values')),
  120. sa.Column('nonce_lifetime', sa.Integer),
  121. sa.Column('md5_cred', sa.String(40)),
  122. sa.Column('password', sa.String(80)),
  123. sa.Column('realm', sa.String(40)),
  124. sa.Column('username', sa.String(40)),
  125. )
  126. op.create_index('ps_auths_id', 'ps_auths', ['id'])
  127. op.create_table(
  128. 'ps_aors',
  129. sa.Column('id', sa.String(40), nullable=False, unique=True),
  130. sa.Column('contact', sa.String(40)),
  131. sa.Column('default_expiration', sa.Integer),
  132. sa.Column('mailboxes', sa.String(80)),
  133. sa.Column('max_contacts', sa.Integer),
  134. sa.Column('minimum_expiration', sa.Integer),
  135. sa.Column('remove_existing', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  136. sa.Column('qualify_frequency', sa.Integer),
  137. sa.Column('authenticate_qualify', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  138. )
  139. op.create_index('ps_aors_id', 'ps_aors', ['id'])
  140. op.create_table(
  141. 'ps_contacts',
  142. sa.Column('id', sa.String(40), nullable=False, unique=True),
  143. sa.Column('uri', sa.String(40)),
  144. sa.Column('expiration_time', sa.String(40)),
  145. sa.Column('qualify_frequency', sa.Integer),
  146. )
  147. op.create_index('ps_contacts_id', 'ps_contacts', ['id'])
  148. op.create_table(
  149. 'ps_domain_aliases',
  150. sa.Column('id', sa.String(40), nullable=False, unique=True),
  151. sa.Column('domain', sa.String(80)),
  152. )
  153. op.create_index('ps_domain_aliases_id', 'ps_domain_aliases', ['id'])
  154. op.create_table(
  155. 'ps_endpoint_id_ips',
  156. sa.Column('id', sa.String(40), nullable=False, unique=True),
  157. sa.Column('endpoint', sa.String(40)),
  158. sa.Column('match', sa.String(80)),
  159. )
  160. op.create_index('ps_endpoint_id_ips_id',
  161. 'ps_endpoint_id_ips', ['id'])
  162. def downgrade():
  163. op.drop_table('ps_endpoints')
  164. op.drop_table('ps_auths')
  165. op.drop_table('ps_aors')
  166. op.drop_table('ps_contacts')
  167. op.drop_table('ps_domain_aliases')
  168. op.drop_table('ps_endpoint_id_ips')